@SuppressWarnings
用于抑制编译器产生警告信息。
- 示例1——抑制单类型的警告
1
2
3
4
5
6
public void addItems(String item){
List items = new ArrayList();
items.add(item);
} - 示例2——抑制多类型的警告
1
2
3
4
5
public void addItems(String item){
List items = new ArrayList();
items.add(item);
} - 示例3——抑制所有类型的警告
1
2
3
4
5
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}关键字 用途 all 抑制所有警告 boxing 抑制与箱/非装箱操作相关的警告 cast 抑制与铸造操作相关的警告 dep-ann 相对于弃用的注释,抑制警告 deprecation 抑制相对于弃用的警告 fallthrough 在switch语句中,相对于缺失的中断,抑制警告 finally 抑制警告相对于最终阻止不返回的警告告 hiding 抑制相对于隐藏变量的局部的警告 incomplete-switch 为了在switch语句(enum案例)中抑制相对于缺失条目的警告告 nls 要抑制相对于非nls字符串字面量的警告 null 抑制null相关的警告 rawtypes 在类params上使用泛型时,抑制相对于非特异性类型的警告 serial 针对可串行化类,抑制相对于缺少serialVersionUID字段的警告 static-access 抑制不正确的静态访问的警告 synthetic-access 抑制相对于内部类的未优化访问的警告 unchecked 抑制相对于未检查操作的警告 unqualified-field-access 禁止与字段访问不合格的警告 unused 抑制相对于弃用的警告 deprecation 抑制未使用的代码的警告
@PathVariable
- 当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
@RequestHeader
- 可以把Request请求header部分的值绑定到方法的参数上。
@CookieValue
- 可以把Request header中关于cookie的值绑定到方法的参数上。
@MatrixVariable 矩阵变量 示例
1 | //GET /owners/42;q=11/pets/21;q=22 |
此处q1=11,q2=22.
@Autowired 与@Resource
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.
建议使用@Resource。
@Reference
Double 中 代表资源.
@Configuration 和 @Bean
@Configuration
标注在类上,相当于把该类作为spring的xml配置文件中的 <beans>
* 注意不是bean,作用为:配置spring容器(应用上下文)
@Bean
标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的 <bean>
,作用为:注册bean对象
@Component
把普通pojo实例化到spring容器中,相当于配置文件中的
- 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
- 案例:
<context:component-scan base-package=”com.*”>
@Value
通过@Value将外部的值动态注入到Bean中. 一般使用在类的属性上.
@Value(“测试”) 或 配置文件中 @Value(“${com.neo.username}”)
导入配置中的中文乱码
Idea:
设置 File Encodings
的 Transparent native-to-ascii conversion
为 true
,具体步骤如下:
依次点击File -> Settings -> Editor -> File Encodings
将 Properties Files (*.properties)
下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。
还乱码的话, 把文件内容剪切后再粘贴进去 Transparent native-to-ascii conversion
会自动转换编码, 再测试
@Entity 和 @Table
@Entity
标注在类上, 说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则
注解 | 作用 | 默认值 |
---|---|---|
@Id | 主键 | |
@GeneratedValue | 主键生成策略 | AUTO |
@TableGenerator | 主键表 | |
@Column | 标识实体类中属性与数据表中字段的对应关系 |
2018-6-21
@EnableCaching
Spring 3开始提供的通过注解开启缓存功能
@ModelAttribute 具有如下三个作用:
①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。其实@ModelAttribute此处对于供视图页面展示来说与model.addAttribute(“attributeName”, abc);功能类似。
1 | public String test( UserModel user) |
此处多了一个注解@ModelAttribute(“user”),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。
②暴露@RequestMapping 方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。
1 | public UserModel test3( UserModel user) |
大家可以看到返回值类型是命令对象类型,而且通过@ModelAttribute(“user2”)注解,此时会暴露返回值到模型数据( 名字为user2 ) 中供视图展示使用
@ModelAttribute 注解的返回值会覆盖@RequestMapping 注解方法中的@ModelAttribute 注解的同名命令对象
③暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping 注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用
@Options
mybatis的@Options注解能够设置缓存时间,能够为对象生成自增的key
@Options(useGeneratedKeys = true, keyProperty = "instanceId", keyColumn = "instance_id")
@Options注解中默认设置的主键对应的字段名为id、在我们的表中,主键名为instance_id,因此需要将keyProperty和keyColumn设置成我们想要的字段:
这个注解的意思就是,从instance_id这个字段里面把数据放到传入对象的instanceId成员变量里面。
注解中的useCache还可以设置缓存相关的选项:
1 | useCache = true表示本次查询结果被缓存以提高下次查询速度, |
@Param
dao层示例
1 | Public User selectUser(; String name, String password) |
xml映射对应示例
1 | <select id=" selectUser" resultMap="BaseResultMap"> |
注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参如 userName对应的是name);
@Param注解JavaBean对象
dao层示例
1 | public List<user> getUserInformation(; User user) |
xml映射对应示例
1 | <select id="getUserInformation" parameterType="com.github.demo.vo.User" resultMap="userMapper"> |
不使用@Param注解来声明参数时
必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。
当参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
useGeneratedKeys 参数
@Options(useGeneratedKeys = true, keyProperty = "instanceId", keyColumn = "instance_id")
int addInstance(Instance instance);
@Options(useGeneratedKeys=true)
获取新添加记录的自增长主键字段值
keyProperty = “instanceId” 对应实体类属性
keyColumn = “instance_id” 对应数据库属性
这句的意思是 添加的时候将插入后生成的主键 instance_id
值自动写入到实体类instanceId
中. 注意不是返回. 是写入到实体类的属性中了, 取的话需要去 Instance.getinstanceId()
去取.
@Transactional
开启事务注解
配合 @Rollback : 回滚, 方法执行完成后回滚数据, 不写入数据库, 做测试用
配合 @Commit : 提交, 提交后数据写入数据库
@Results
对返回的多个结果如List进行绑定,
1 |