关于mybatis的@Param注解和参数

一、使用@Param注解

@Select("select * from users where id=#{id}")
@Results({
        @Result(id = true, property = "id", column = "id"),
        @Result(property = "username", column = "username"),
        @Result(property = "email", column = "email"),
        @Result(property = "password", column = "password"),
        @Result(property = "phoneNum", column = "phoneNum"),
        @Result(property = "status", column = "status"),
        @Result(property = "roles",column = "id",javaType = java.util.List.class,many = @Many(select = "com.itheima.ssm.dao.IRoleDao.findRoleByUserId"))
})
UserInfo findById(String id) throws Exception;

当使用@Param注解来说明参数时,可以使用 #{} 或 ${} 的方式。

@Select("select * from users where id=${id}")
UserInfo findById(@Param("id")String id) throws Exception;

当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

二、不使用@Param注解
不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性

// 这里id是user的属性
@Select("SELECT * from user where id = #{id}")
User findUserById(User user);

 

posted @ 2019-01-23 17:14  payn  阅读(201)  评论(0)    收藏  举报