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

简介: mybatis-plus 判断参数是否为空并作为查询条件

@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 = ‘老王’





目录
相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
193 8
|
26天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
14 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
1月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
40 1
|
1月前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
37 10
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
4月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
69 11
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
|
4月前
|
SQL
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程