mybatis-plus 如何判断参数是否为空并作为查询条件
作者:bug菌1 发布时间:2022-09-14 22:05:03
标签: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 = ‘老王’
查询时某些字段为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
0
投稿
猜你喜欢
- 在java项目开发过程中,使用properties文件作为配置基本上是必不可少的,很多如系统配置信息,文件上传配置信息等等都是以这种方式进行
- 针对实例化过程中会做什么的分析,其中主要的是怎么推断出构造方法,怎么进行匹配【1】前言实例化这一步便是在doCreateBean方法的 in
- 各位亲们可以尝试以下代码:注:这里我就只有一个html标签对来说明问题了,首部之类的东西,自己添加。<html> &n
- 1.根据单个分隔字符用split截取例如string st="GT123_1";string[] sArray=st.s
- (注意:本文基于JDK1.8)前言任何一个容器类对象用于持有元素后,总是需要遍历元素的,即挨个去访问每个元素1次,而遍历元素,除了常规的依赖
- 接收JSON浏览器传来的参数,可以是 key/value 形式的,也可以是一个 JSON 字符串。在 Jsp/Servlet 中,我们接收
- 使用前准备Build.gradle文件配置dependencies配置compile 'com.squareup.retrofit2
- 0x00:前言参考之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作
- 1、首先创建一个测试实体类Person,并携带如上注解,其注解的作用描述在messagepackage com.clickpaas.pojo
- 基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!Apple.javapackage strategy;/**
- 最近一个项目中,需要用到Java的websocket新特性,于是就学了一下,感觉这技术还挺好玩的,瞬间知道网页上面的那些在线客服是怎么做的了
- 网易Java程序员两轮面试题,请作答。part 1:网易JAVA程序员一面1.volatile有什么用?2.Minor GC和Full GC
- 开发环境使用jdk1.8.0_60,把springboot 项目打成war包后,部署到apache-tomcat-7.0.68时报错如下,换
- 微服务通过Feign调用进行密码安全认证在项目中,微服务之间的通信也是通过Feign代理的HTTP客户端通信,为了保护我们的业务微服务不被其
- 一、数组创建1.1 声明并赋值int[] a = {1,2,3};1.2 声明数组名开辟空间并且赋值int[] a;a = new int[
- SpringBoot整合第三方技术一、整合Junit新建一个SpringBoot项目使用@SpringBootTest标签在test测试包内
- “Java is still not dead—and people are starting to figure that out.”本教
- Socket异常客户端异常java.net.ConnectException: Connection refused: connect。该异
- 开发环境win10Android Studio效果用于多级菜单展示,或选择。如 每个省,市,县;如 树木的病虫害;关键代码 @overrid
- 一、概念 1. 为了能让程序操作数据库,对数据库中的表进行操作,每一种数据库都会提供一套连接和操作该数据库的驱动,而且每种数据库