MyBatis传递参数的三种方式

引出问题:在一些需要参数的SQL语句中,如何在MyBatis中实现?

解决方案

  1. 传一个参数
    使用MySQL中的concat函数 进行字符串拼接
    例 columnName LIKE CONCAT (’%’,‘xxxx’,’%’)
    在MyBatis的映射文件中创建select标签 使用#{}的方式使用参数
    贴代码
	/*
	 resultType是返回类型 使用typeAliases 设置别名 可以写别名 parameterType是参数类型 可以省略
	*/
	<select id="getUserListByUserName" parameterType="String" resultType="User">
	   SELECT * FROM smbms_user WHERE userName LIKE CONCAT ('%',#{userName},'%')
	</select>	
  1. 传多个参数
    传入Map集合
    传入JavaBean实体
    使用方式:通过#{属性名}或者#{map的keyName}即可获取传入值
    贴代码
/*接口代码*/
public List<User> getUserList(User user);
/*对应映射Mapper*/
	<select id="getUserList" resultType="User">
	    SELECT * FROM smbms_user WHERE userName LIKE CONCAT ('%',#{userName},'%')
	    and userRole=#{userRole}
	</select>
Map也是同理 传入一个Map<K,V>的泛型集合 
然后使用map.put插入数据 然后对应的映射xml文件中使用#{Key}获取传入参数
  1. 注解入参
    使用Java注解的方式,直接入参
    使用方式:在接口的形参前使用@Param注解 在映射文件的SQL中直接使用#{注解名称}获取传入参数
    贴代码
    /*接口代码*/
    public int updatePwd(@Param("id")Integer id,@Param("userPassword")String userPassword);
    
    /*对应映射Mapper*/
    /*由于这个不是查询语句 所以没有resultType属性 参数类型属性省略*/
    	<update id="updatePwd" >
    		update smbms_user set userPassword=#{userPassword} where id = #{id}
    	</update>
    

总结:以上文章仅用于学习总结,各位大佬勿喷,如果对您有一些启发,那本人荣幸之极!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值