Mybatis 使用@Param注解 和 javaBean方法示例

背景:SSM 项目 传递多个参数 用注解来简化xml配置的时候, @Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中

关于Mybatis @Param 注解,可以查看其官方文档 其中关于 @param部分的说明是:

@Param Parameter N/A 如果你的映射器的方法需要多个参数, 这个注解可以被应用于映射器的方法 参数来给每个参数一个名字。否则,多 参数将会以它们的顺序位置来被命名 (不包括任何 RowBounds 参数) 比如。 #{param1} , #{param2} 等 , 这 是 默 认 的 。 使 用 @Param(“person”),参数应该被命名为 #{person}。

使用@Param

因篇幅限制 仅放核心代码

DAO 层 : userDao.java

void updateById(@Param("user_name") String uname, @Param("user_newPass") String u_newPass);

mapper文件 userDao.xml:

<update id="updateById">
    update user SET user_pass = #{user_newPass} 
    	WHERE user_name = #{user_name};
</update>

采用 #{} 的方式把@Param注解括号内的参数进行引用

注意

  • @Param 中定义的变量名必须和 mapper 中保持一致才可以
  • 当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

使用javaBean

传递多个参数,不使用 @Param 注解 使用javaBean

DAO 层, userDao.java

//	搜索用户,对结果进行分页
   List searchUser(Map<String,Object>);

Service 层 使用DAO,UserService.java

UserInfo userInfo = new UserInfo();
Pagination page = new Pagination();
Map<String,Object> map = new HashMap<>;
map.put("userInfo",userInfo);
pam.put("page",page);
userService.searchUser(map);

mapper文件userDao.xml

<select id="searchUser" parameterType="java.util.Map" resultType="UserInfo">
	select *
	from t_userinfo user 
	where 1 =1
	<if test="user.uname != null and ''!= user.uname ">
		and user.uname like '%${userInfo.uname}$%'
	</if>
		
	<if test="page.order != null and page.order == 10" >
		order by user.id asc
	</if>
	limit ${page.pagenum * page.limitnum}, #{page.limitnum}
	
</select>

参考文章:
关于Mybatis的@Param注解
Mybatis中@Param的用法和作用详解

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页