在Dao接口中经常会用到@Param注解。
在Dao接口中,参数列表中如果只有一个参数,并且没有@Param注解时:
public User getUser(String userName);
SELECT * FROM USER WHERE USER_NAME = #{0}
SELECT * FROM USER WHERE USER_NAME = #{userName}
SELECT * FROM USER WHERE USER_NAME = #{ABC}
在Dao接口中,参数列表有多个参数时,并且不带@Param注解时:
public User getUser(String userName,int userAge);
SELECT * FROM USER WHERE USER_NAME = #{0} AND USER_AGE = #{1}
SELECT * FROM USRE WHERE USRE_NAME = #{userName} AND USER_AGE = #{userAge}
当Dao接口中,有@Param注解时(必须这样写):
public User getUser(@Param("USER_NAME")String userName);
SELECT * FROM USER WHERE USER_NAME = #{USER_NAME}
public User getUser(@Param("USER_NAME")String userName,@Param("USER_AGE")int userAge);
SELECT * FROM USER WHERE USER_NAME = #{USER_NAME} AND USER_AGE = #{USER_AGE}
总结:当参数列表中没有@Param注解时,可以通过#{0},#{1}这样的方式去访问,也可以通过自定义的方式去访问,但是xml解析时会根据参数列表的顺序去解析。当参数列表中有@Param注解时,就必须通过#{注解指定名称}的方式访问。