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也更合适,速度会更快