使用注解标注sql语句
sql语句除了可以写在xml文件中,还可以使用注解标注在接口方法上面,如:
/*** 根据id查询用户** @param id id* @return 返回一个用户对象*/@Select("select * from user where id = #{uid}")User getUserById(@Param("uid") int id);
/*** 添加一个新用户** @param user 新用户对象* @return 返回数据发生改变的行数*/@Insert("insert into user(id, name, pwd) values (#{id}, #{name }, #{pwd})")int addUser(User user);
/*** 修改用户信息** @param user 用户新信息* @return 返回int*/@Update("update user set `name` = #{name},pwd = #{pwd} where id = #{id}")int updateUserById(User user);
/*** 通过id删除用户** @param id 用户id* @return 返回int*/@Delete("delete from user where id = #{id}")int deleteUserById(@Param("id") int id);
@Param注解
@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中。
使用示例:
/*** 根据id查询用户** @param id id* @return 返回一个用户对象*/User getUserById(@Param("uid") int id);
<select id="getUserById" resultType="com.wjh.po.User" parameterType="int">select *from userwhere id = #{uid}</select>
在xml映射中,#{}中必须使用@param注解标注的uid而不能用id。
/**
* 根据id查询用户
*
* @param id id
* @return 返回一个用户对象
*/
@Select("select * from user where id = #{uid}")
User getUserById(@Param("uid") int id);
如果使用注解标注sql语句,#{}中也必须使用@param注解标注的uid而不能用id。
@Param注解用于给方法参数起一个名字。以下是总结的使用原则:
在方法只接受一个参数的情况下,可以不使用@Param。
在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
如果参数是 JavaBean , 则不能使用@Param。
不使用@Param注解时,参数只能有一个,并且是Javabean。
xml映射和注解映射的区别
(1)xml映射可以配置一些复杂的sql,而注解映射一般都只能配置一些相对没那么复杂的sql。
(2)在实体类属性和数据库字段的名字不能对应的情况下,xml映射可以通过resultMap结果集来解决,而注解映射是没有可以设定的地方,因此比较难解决这个问题。
(3)从软件开发的角度来说,xml映射相对于注解映射来说,更加易于后期的维护。
