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

Echo鑫
2017-10-21
@Param 这个注释在写DAO层接口的时候,是一定要在入参前面加上吗?加上后,是不是别名就是注解内的名称?
在private UserMapper userMapper中,为什么引用的是@Resource而不是@Autowired
集合用Set是不是由于权限跟角色不需要顺序,且不可以重复,才用set而不用list集合。
写回答
1回答
-
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也更合适,速度会更快
10
相似问题