第三章动态sql

本文介绍了MyBatis的动态SQL功能,重点讲解了如何使用动态SQL进行多条件查询和更新操作。动态SQL元素包括If、Choose(with when and otherwise)、Where、Set、Trim和Foreach,特别是Foreach用于处理in条件的数组迭代。通过实例展示了如何使用If和Set改造更新操作,避免不必要的字段更新,并详细解释了Foreach的属性及其在构建in条件时的应用。
摘要由CSDN通过智能技术生成

3.1使用动态sql完成多条件查询
动态sql是mybatis的一个强大的特性,在使用JDBC操作数据时,如果查询条件特别多,将条件串联成sql字符串是一件痛苦的事情,通常的解决方法是写很多的if-else条件语句对字符串进行拼接,并确保不能忘了空格或在字段的最后省略逗号。Mybatis使用 一种强大的动态sql语句来改善这种情况。动态sql基于ognl的表达式,可使我们方便的在sql语句中实现某些逻辑,用于实现动态sql的元素如下。
If:利用if实现简单的条件选择
Choose:相当于java中的switch语句,通常与when和otherwise搭配。
Where:简化sql语句找那个where的条件判断
Set:解决动态更新语句
Trim:可以灵活地去除多余的关键字
Foreach:迭代一个集合,通常用于in条件

3.2.1使用if+set改造更新操作
回顾之前的演示示例-修改用户信息操作,在该示例中,采用的是封装User对象入参,根据用户id进行用户信息修改,当操作数据的时候,每个字段都进行了赋值更新。但是在实际项目中,用户在进行信息的更新操作时,并不一定所有的数据都会进行修改,对应用户没有修改的数据,数据库不需要进行相应的更新操作,即更新用户表数据,若某个参数传入值为null时,不需要set该字段,那么现在就先测试一下之前的修改用户信息示例,观察是否满足正常的业务需求。

通过日志中的sql语句和参数,我们发现未被设值的参数也进行了set操作,那么如何解决?就需要使用动态sql中的set元素来处理。

Set元素主要用于更新操作,它的主要功能个whe

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值