Mybatis-plus: 动态查询条件非空判断

Created on 29 Aug 2018  ·  1Comment  ·  Source: baomidou/mybatis-plus

当前使用版本

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0-RC3</version>
</dependency>

该问题是怎么引起的?

  • 动态参数为空字符串的时候生成了对应的where语句

重现步骤

  • 全局参数,field-strategy: NOT_NULL

  • springmvc controller里的方法,sysrUser接收前端的查询条件,字符串id为sysrUser的属性,前端传的id为空字符串

  public IPage<SysrUser> page(SysrUser sysrUser, Page<SysrUser> page) {
        return sysrUserService.page(page, new QueryWrapper<>(sysrUser));
    }
  • 打印的sql语句
  Preparing: SELECT COUNT(1) FROM sysr_user WHERE id = ? 
 Parameters: (String)
  • 期望的结果是id为null或者为空字符串的时候不在查询条件里面

报错信息

  • id包含在where语句中

建议

  • field-strategy: NOT_NULL,这个策略在update字符串类型的字段的时候基本符合要的效果,但是在select的时候,如果条件字段是字符串类型的话更多的是用not_empty,所以希望mp能分开设置查询和更新操作的field-strategy

  • 虽然可以通过重写mapper.xml去自己实现,但是更希望mp能够支持这种需求,毕竟这样可以省去很多代码,更符合使用mp的初衷

Most helpful comment

QueryWrapper.eq(boolean,column,value)使用该方法,boolean值里进行入参判断是否加入where条件

>All comments

QueryWrapper.eq(boolean,column,value)使用该方法,boolean值里进行入参判断是否加入where条件

Was this page helpful?
0 / 5 - 0 ratings