MybatisPlus查询条件为空字符串或null问题及解决

目录
  • 查询条件为空字符串或null问题
    • 问题描述
    • 解决办法
  • 查询表的时候有些字段为空问题
    • 亲测,已经解决

查询条件为空字符串或null问题

问题描述

工作种当使用mybatisplus框架进行条件查询时,会出现参数为空字符串或者null也走查询条件,写一篇文章记录一下。

String name = "张三";
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.eq(User::getName, name);
List<User> userList = userMapper.selectList(lqw);
// 当name为空字符串或null时,最后生成的sql会变成
SELECT * FROM user WHERE name = '';
SELECT * FROM user WHERE name = null;

这就不好查了。

解决办法

mybatisplus的条件构造器方法 eq()like()等这些方法能支持第三个参数 condition

condition是一个布尔值,当conditionfalse

时,当前这个条件方法不会生效,即生成的sql不会拼接这个条件;所以在这个参数里判断查询参数是否为空即可。

lqw.eq(StringUtils.hasText(name), User::getName, name);

主要还是对mybatis-plus不熟悉导致的。

查询表的时候有些字段为空问题

亲测,已经解决

yaml:

mybatis:
  mapper-locations: classpath:mapper/*.xml
#  config-location: classpath:mybatis/mybatis-config.xml
  configuration:
    map-underscore-to-camel-case: true                                  #开启驼峰命名模式

商品ID和品牌ID都是为空。

因为我在Product、和ProductDto里的字段:store_id, brand_id

因为yaml配置开启了驼峰,所以就不能映射到数据库表中的store_id和brand_id字段。

所以把数据库字段和javaBean、Dto的字段都设置为驼峰命名就可以了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    背景 项目中集成了mybatis plus, 今天在做后台的一个常规的增删改查时,发现字段值为null时,这个字段不会被保存到数据库 解决办法 在字段上加上 @TableField(strategy = FieldStrategy.IGNORED) strategy字段更新插入策略属性说明: IGNORED(0): "忽略判断", 所有字段都更新和插入 NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值 NOT_EMPTY(2): &quo

  • mybatis-plus 如何判断参数是否为空并作为查询条件

    目录 判断参数是否为空并作为查询条件 只需要在eq条件构造器中只需要添加一句判断即可 StringUtils.isNullOrEmpty()方法作用是 附上isNullOrEmpty()源码 ---[拓展]--- 查询时某些字段为null的问题 判断参数是否为空并作为查询条件 @Override     public Page<DemandEntity> selectByDepartmentDisplay(DemandEntity demandEntity) {         EntityW

  • 详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    最近遇到了Mybatis-Plus updateById(),更新某一个字段为null,却发现没有更新成功,发现有一个博客记录挺好的.转载过来,方便自己看. 一.简介 因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决. 二.原理 在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是

  • MybatisPlus查询条件为空字符串或null问题及解决

    目录 查询条件为空字符串或null问题 问题描述 解决办法 查询表的时候有些字段为空问题 亲测,已经解决 查询条件为空字符串或null问题 问题描述 工作种当使用mybatisplus框架进行条件查询时,会出现参数为空字符串或者null也走查询条件,写一篇文章记录一下. String name = "张三"; LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); lqw.eq(User::g

  • Mybatis-plus 查询条件为空不生效问题及解决

    目录 查询条件为空不生效 参数不生效 查询条件为空不生效 -- mybatis-plus eq方法 default Children eq(R column, Object val) {     return this.eq(true, column, val); } public Children eq(boolean condition, R column, Object val) {     return this.addCondition(condition, column, SqlKe

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • mybatis if test 不为空字符串或null的解决

    目录 mybatis if test 不为空字符串或null mybatis中if test判断数值字符串注意项 总结 mybatis if test 不为空字符串或null <sql id="public_content"> <if test="productId != null and productId !=''" > and a.product_id = #{productId,jdbcType=VARCHAR} </if>

  • MySQL中查询字段为空或者为null的方法

    目录 MySQL查询字段为空或者为null 判断为null 判断为空或空格 MySQL查询字段为空(null)时设置默认值 总结 MySQL查询字段为空或者为null 判断为null select * from table where  column is null; 不为null: select * from table where  column is not null; 判断为空或空格 select * from table where column =''; 注:不管是空还是其中有空格都

  • SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法

    NULL值影响查询条件的结果,并且结果很微妙. 以下是SQL中AND,OR,NOT的真值表. 表1    AND的真值表 TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE FALSE NULL NULL FALSE NULL                                               表2    OR的真值表 TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE F

  • MySQL如何判断字符串为NULL或者为空字符串

    目录 判断字符串为NULL或者为空字符串 MySQL中NULL和空字符串区别 一般会有以下疑问 注意事项 判断字符串为NULL或者为空字符串 函数名 说明 ISNULL(expr) 如果expr为null返回值1,否则返回值为0 IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值 NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值:相当于case when expr1=expr2

  • 为什么vue中不建议使用空字符串作为className

    目录 比较空字符串''和null 情况1:使用空字符串'' 情况2:使用null 情况3:使用undefined 使用对象的形式绑定class 使用 &&绑定class 案例1:isBold为false 案例2:isBold为null 空class就一定不对吗? 在我们用三元表达式给DOM元素设置class时,使用空字符串,会导致渲染出一个没有值的空class, 为了避免这种情况出现,可以使用null来代替空字符串. <!-- ❌ --> <div :class=&quo

随机推荐