MyBatis多条件查询

1.MyBatis多条件查询

1.1:使用实体类  将参数封装成对象

接口:

public List<User> getUserListByUser(User user);

Mapper映射文件:

<select id="getUserListByUser" resultType="User" parameterType="User">

select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

</select>

注意:#{}中参数名需要与对象的属性名一致

1.2:使用Map集合 将参数存入Map集合进行传递

接口:

public List<User> getUserListByUserMap(Map<String, String> map);

Mapper映射文件:

<select id="getUserListByUserMap" resultType="User" parameterType="map">

select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

</select>

注意:#{}中参数名需要与Map集合中的键名一致

1.3:使用@param注解传递多个参数

接口:

public List<User> getUserListByParam(@Param("userName")String username,@Param("userRole")Integer roleId);

Mapper映射文件:

<select id="getUserListByParam" resultType="User" >

select * from smbms_user where username like CONCAT('%',#{userName},'%') and userRole=#{userRole}

</select>

注意:使用@Param注解封装的参数 小括号中参数名需要与#{}中参数名一致

1.4:直接传入多个参数 使用下标获取

接口:

public List<User> getUserListByParam(String username,Integer roleId);

Mapper映射文件:

<select id="getUserListByParam" resultType="User" >

select * from smbms_user where username like CONCAT('%',#{0},'%') and userRole=#{1}

</select>

2.${}和#{}获取参数的区别?

2.1#{}会将参数转换成String类型进行处理(特殊字符会进行转义)  ${}不会

2.2使用#{}会进行sql预处理 也就是表示使用PreparedStatement进行执行sql语句 可以有效防止sql注入  但是使用${}不会

2.3一般在进行排序order by的时候使用${} eg:${value} (只有单个参数时使用${value}可以获取到参数值,多个参数依然使用对象属性或Map集合的键名)

2.4在能用#{}的时候就不要去用${}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值