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

目录
  • 判断参数是否为空并作为查询条件
    • 只需要在eq条件构造器中只需要添加一句判断即可
    • StringUtils.isNullOrEmpty()方法作用是
    • 附上isNullOrEmpty()源码
    • ---【拓展】---
  • 查询时某些字段为null的问题

判断参数是否为空并作为查询条件

@Override
    public Page<DemandEntity> selectByDepartmentDisplay(DemandEntity demandEntity) {
        EntityWrapper<DemandEntity> wrapper = new EntityWrapper<DemandEntity>();
        wrapper.eq(!StringUtils.isNullOrEmpty(demandEntity.getNameDemandDepartmentDispaly()),"name_demand_department_dispaly",demandEntity.getNameDemandDepartmentDispaly());
        Page<DemandEntity> demandEntityPage = this.selectPage(demandEntity.getPages(),wrapper);
        return demandEntityPage;
    }

只需要在eq条件构造器中只需要添加 一句判断即可

!StringUtils.isNullOrEmpty(demandEntity.getNameDemandDepartmentDispaly() 

为true,就拼接where条件;为Flase就不拼接;

 eq(boolean condition, R column, Object val)     

第一个参数 为boolean类型 true就拼接上 flase就不拼接;

StringUtils.isNullOrEmpty()方法作用是

判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty;

附上 isNullOrEmpty() 源码

/**
     * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
     *
     * @param obj
     * @return
     */
    public static boolean isNullOrEmpty(Object obj) { 
        if (obj == null) return true; 
        if (obj instanceof CharSequence) return ((CharSequence) obj).length() == 0; 
        if (obj instanceof Collection) return ((Collection) obj).isEmpty(); 
        if (obj instanceof Map) return ((Map) obj).isEmpty(); 
        if (obj instanceof Object[]) {
            Object[] object = (Object[]) obj;
            if (object.length == 0) {
                return true;
            }
            boolean empty = true;
            for (int i = 0; i < object.length; i++) {
                if (!isNullOrEmpty(object[i])) {
                    empty = false;
                    break;
                }
            }
            return empty;
        } 
        return false;
    }

---【拓展】---

eq

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

等于

例: eq(“name”, “老王”) 等价于  name = ‘老王’

查询时某些字段为null的问题

在SpringBoot+Mybatis项目执行时发现,Mybatis查询的数据中的某些字段为null

在网站上搜索得到的是mybatis配置中需要添加一段配置驼峰命名法

mybatis:configuration:map-underscore-to-camel-case: true

但在公司项目中这个配置是已经配置的了,经过测试还是无法获取正确的值

经过自己查看代码后发现,是字段无法映射到对应的实体上,即charging_name(entity)->charging_name(database)

将实体类的charging_name修改为chargingName,开启驼峰命名法,就可以获取正确的值了。

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

(0)

相关推荐

  • 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

  • mybatis plus的3种查询方式(小结)

    本文是基于springboot框架下的查询.  一:基本配置: 1.仓库依赖 <repositories> <repository> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>

  • mybatis-plus 判断isnull or的操作

    mybatis-plus 判断null或者匹配固定值 wrapper.lambda().and(wrapper1 -> wrapper1.isNull(MaterialInfoDO::getCompanyId).or().eq(MaterialInfoDO::getCompanyId, "ABC"); 补充:Mybatis-plus查询时某些字段为null 在网站上搜索得到的是mybatis配置中需要添加一段配置驼峰命名法 mybatis:configuration:map-un

  • mybatis-plus QueryWrapper自定义查询条件的实现

    mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus.  但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中. 版本推荐用3.1.0,3.1.1及以上版本有bu

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

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

  • python 判断参数为Nonetype类型或空的实例

    Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空 判断方式如下: if hostip is None: print "no hostip,is nonetype" elif hostip: print "hostip is not null" else: print " hostip is null" 以上这篇python 判断参数为Nonetype类型或空的实例就是小编分享给大家的全部内

  • mybatis判断int是否为空的时候,需要注意的3点

    mybatis判断int是否为空的注意点 1.int为空时会自动赋值0,所以必须用integer作为javaBean的属性值类型. 2.必须注意封装的get.set.也是Integer.不然也会报错. 3.注意好以上两个点,直接用null判断 例子: public class ExcelPutVo { private Integer startTime;// 开始时间 private Integer endTime;// 截止时间 private int sentId;// 下达者id priv

  • mybatis判断list不为空/大小的问题

    目录 mybatis判断list不为空 mybatis判断两个集合是否为空 mybatis判断list不为空     <if test="status != null and status.size()>0" >       and s.orderstatus in        <foreach collection="status" item="listItem" open="(" close=&q

  • mybatis的if判断integer问题

    目录 if判断integer的问题 if判断integer类型注意点 if判断integer的问题 昨天在使用mybatis的if判断integer时遇见一个小问题: <if test="isChoose != null and isChoose != '' and isChoose == 0">      </if> 我发现前段同事调用接口的时候传参总是无法进入条件, 原来mybatis的if将0认为是'',所以这样判断是无法进入条件的,将数字换为1,2之类的

  • Mybatis传递多个参数进行SQL查询的用法

    PS:ibatis3如何传递多个参数有两个方法:一种是使用java.Map,另一种是使用JavaBean. 当只向xxxMapper.xml文件中传递一个参数时,可以简单的用"_parameter"来接收xxxMapper.java传递进来的参数,并代入查询,比如说这样: (1)xxxMapper.java文件中这样定义: List<String> selectAllAirportCode(Boolean mapping); (2)这时在对应的xxxMapper.xml文件

  • MyBatis拦截器:给参数对象属性赋值的实例

    该拦截器的作用:在进行增加.修改等操作时,给数据模型的一些通用操作属性(如:创建人.创建时间.修改人.修改时间等)自动赋值. 该实现是在DAO层拦截,即存入DB前最后一层.后经分析,不是很合理,改为在service层拦截,用spring AOP来实现了,该代码遂弃用.不过已经测试可用,记录备忘. package com.development; import java.lang.reflect.InvocationTargetException; import java.util.Date; i

  • Java中判断对象是否为空的方法的详解

    首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.util包下的.这两种StringUtils工具类判断对象是否为空是有差距的: StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方法参数是字符序列类,也就是String类型 StringUtils.isEmpt

  • mybatis的if判断不要使用boolean值的说明

    mybatis的if判断里面最好不要使用boolean值: mybatis会默认把空值转为false.所以如果遇见前段传空值,这个字段在mybatis里面永远就是false了, 可以使用数字类型代替,但是不要使用0作为参数: 补充知识:[MyBatis]<if test=""></if>标签的条件判断(Boolean类型参数) 在MyBatis 中,动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似. 在 MyBatis 3 之前的版本中,有很

  • 解决MyBatis中Enum字段参数解析问题

    目录 基础Class和TypeHandler 请求参数解析问题 问题解决 基础Class和TypeHandler MyBatis操作的基本User对象结构如下: @Data @Alias(value = "user") public class User implements Serializable { private static final long serialVersionUID = -4947062488310146862L; private Long id; @NotNu

随机推荐