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的用法和作用详解

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值