当前使用版本
当前版本: 3.3.1
该问题是怎么引起的?
问题是这样的, 前端传过来的查询条件中 有的属性是null 有的属性是空字符串 即: ""
这个时候我用
QueryWrapper
如果说queryWrapper.setEntity(user);方法也加一个如QueryWrapper.eq(boolean,column,value)这个方法的第一个参数就好了.
不知道我表达的清楚否? 请大神帮忙看看这个问题吧..
重现步骤
无
报错信息
无
Comment From: ThailandKing
可通过配置确定生成SQL的条件,如下配置可以解决字段为空或NULL时不生成查询条件 mybatis-plus.global-config.db-config.select-strategy=not_empty
Comment From: ThailandKing
参考官方配置:https://mp.baomidou.com/config/#insertstrategy 个人开发建议:
全局设置 mybatis-plus.global-config.db-config.select-strategy=not_empty
1、查询时 根据wrapper.setEntity(user); //因为这样设置最省事,有了上面的全局配置,自动过滤字段为空为NULL的查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
User user = new User();
user.setEmail(null);
user.setName("");
user.setVersion(1);
wrapper.setEntity(user);
List<User> userList = userMapper.selectList(wrapper);
userList.forEach(item -> System.out.println(item));
2、更新时 根据业务逻辑指定字段更新,或者XML配置动态SQL
Comment From: ThailandKing
wrapper.setEntity(user); 只能设置等值查询条件,对于like模糊查询等不适用
Comment From: ThailandKing
在 select 的时候的字段验证策略: wrapper 根据内部 entity 生成的 where 条件 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准
Comment From: miemieYaho
如上
Comment From: zzdehao
完美解决了, 我的问题. 上面说的like问题, 我会在代码里单独设置, 并且设置完后把对应的属性设置为null, 这样20个字段3个like工作量也就没有那么大了. 完美!!!