好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

?

1

2

3

4

5

6

7

@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条件构造器中只需要添加 一句判断即可

?

1

!StringUtils.isNullOrEmpty(demandEntity.getNameDemandDepartmentDispaly()

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

?

1

  eq( boolean condition, R column, Object val)    

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

StringUtils.isNullOrEmpty()方法作用是

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

附上 isNullOrEmpty() 源码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

/**

      * 判断对象或对象数组中每一个对象是否为空: 对象为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

?

1

2

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,开启驼峰命名法,就可以获取正确的值了。

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

原文链接:https://luoyong.blog.csdn.net/article/details/98621712

查看更多关于mybatis-plus 如何判断参数是否为空并作为查询条件的详细内容...

  阅读:47次