MybatisPlus利用构造器写动态SQL

MybatisPlus利用构造器写动态SQL

项目场景:

SpringBoot+MybatisPlus+redis+jeecg:


问题描述:

今天有一个需求,前端有一个筛选器,可以根据一个数据表中6个字段筛选出这个数据表中的相应数据,这6个字段可传可不传


问题分析:

设计接口时,我把这6个字段封装到一个实体类中,让前端按照规则传入实体类的值。但由于这个实体类中的值不传的话为空,所以需要写一个动态SQL判断这个封装类中的所有值是否为空并拼接进sql语句中。


解决方案:

因为对MybatisPlus的构造器不太熟,所以直接在网上查了这个问题“MybatisPlus构造器怎么构造动态sql”,然后结局有点悲惨,一个小时多都没有解决。纳闷传说中很强大的MybatisPlus构造器为什么会有此bug???
后来听朋友建议去看了一下MybatisPlus的构造器的源码才发现,QueryWrapper中其实是有动态拼接的(百度搜索瞎了吗,还是我瞎了,一个小时愣是没有搜出来),下面赶紧展示:


QueryWrapper<ProjectModel> queryWrapper = new QueryWrapper<>();
queryWrapper = queryWrapper.eq(vclNumber!=null&&vclNumber!="","vclNumber",vclNumber)
      .eq(vclModelName!=null&&vclModelName!="","vclModelName",vclModelName)
      .eq(customerName!=null&&customerName!="","customerName",customerName)
      .eq(linkman!=null&&linkman!="","linkman",linkman)
      .eq(engineModel!=null&&engineModel!="","engineModel",engineModel)
      .eq(repairTypeValue!=null&&repairTypeValue!="","repairTypeValue",repairTypeValue)
              .orderByDesc("create_time");



eq(R column, Object val)/eq(boolean condition, R column, Object val)

此处的“eq”相当于“=”,并对字段进行了非空判断然后动态拼接进sql语句中。

每天都会根据项目中遇到的问题或bug更新上来,有什么疑问或其他解决方法欢迎提出来一起讨论!!!

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉结尔之书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值