三个疑问

来源:3-8 基于SpringBoot连接数据库与配置MyBatis实操

Echo鑫

2017-10-21

  1. @Param  这个注释在写DAO层接口的时候,是一定要在入参前面加上吗?加上后,是不是别名就是注解内的名称?

  2. 在private UserMapper userMapper中,为什么引用的是@Resource而不是@Autowired

  3. 集合用Set是不是由于权限跟角色不需要顺序,且不可以重复,才用set而不用list集合。

写回答

1回答

Jimin

2017-10-21

1、@Param 不是必须的,加上后,别名就是注解里的名称。这个有时是必须的,比如需要传入mapper两个对象,对象有重复名称的字段(比如都包含主键id),这时不使用别名,就很难分清重复的那个属性是哪个对象里的,导致出错,而如果要带上对象名,就需要通过@Param来指定了

2、@Autowired与@Resource都可以用来装配bean

@Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false。如果我们想使用名称装配可以结合@Qualifier注解进行使用。

@Resource 默认按照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果name属性一旦指定,就只会按照名称进行装配。

另外,@Autowired属于spring的,@Resource 属于J2EE的,@Resource可以减少了与spring的耦合,代码也更优雅

3、是的。set 不需要顺序,且不会有重复的对象,如果需要判断某个对象是否已存在,set也更合适,速度会更快

1
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2226 学习 · 1334 问题

查看课程