mybatis-plus 如何判斷參數(shù)是否為空并作為查詢條件
判斷參數(shù)是否為空并作為查詢條件
@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條件構(gòu)造器中只需要添加 一句判斷即可
!StringUtils.isNullOrEmpty(demandEntity.getNameDemandDepartmentDispaly()
為true,就拼接where條件;為Flase就不拼接;
?eq(boolean condition, R column, Object val) ? ?
第一個(gè)參數(shù) 為boolean類型 true就拼接上 flase就不拼接;
StringUtils.isNullOrEmpty()方法作用是
判斷對(duì)象或?qū)ο髷?shù)組中每一個(gè)對(duì)象是否為空: 對(duì)象為null,字符序列長(zhǎng)度為0,集合類、Map為empty;
附上 isNullOrEmpty() 源碼
/** ? ? ?* 判斷對(duì)象或?qū)ο髷?shù)組中每一個(gè)對(duì)象是否為空: 對(duì)象為null,字符序列長(zhǎng)度為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”, “老王”) 等價(jià)于 name = ‘老王’
查詢時(shí)某些字段為null的問題
在SpringBoot+Mybatis項(xiàng)目執(zhí)行時(shí)發(fā)現(xiàn),Mybatis查詢的數(shù)據(jù)中的某些字段為null
在網(wǎng)站上搜索得到的是mybatis配置中需要添加一段配置駝峰命名法
mybatis:configuration:map-underscore-to-camel-case: true
但在公司項(xiàng)目中這個(gè)配置是已經(jīng)配置的了,經(jīng)過測(cè)試還是無法獲取正確的值
經(jīng)過自己查看代碼后發(fā)現(xiàn),是字段無法映射到對(duì)應(yīng)的實(shí)體上,即charging_name(entity)->charging_name(database)
將實(shí)體類的charging_name修改為chargingName,開啟駝峰命名法,就可以獲取正確的值了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot導(dǎo)出Excel的四種實(shí)現(xiàn)方式
近期接到了一個(gè)小需求,要將系統(tǒng)中的數(shù)據(jù)導(dǎo)出為Excel,且能將Excel數(shù)據(jù)導(dǎo)入到系統(tǒng),對(duì)于大多數(shù)研發(fā)人員來說,這算是一個(gè)最基本的操作了,本文就給大家總結(jié)一下SpringBoot導(dǎo)出Excel的四種實(shí)現(xiàn)方式,需要的朋友可以參考下2024-01-01java使用JNA(Java Native Access)調(diào)用dll的方法
java使用JNA(Java Native Access)調(diào)用windows系統(tǒng)的dll文件的例子2013-11-11intellij idea中安裝、配置mybatis插件Free Mybatis plugin的教程詳解
這篇文章主要介紹了intellij idea中安裝、配置mybatis插件Free Mybatis plugin的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09詳解java 中Spring jsonp 跨域請(qǐng)求的實(shí)例
這篇文章主要介紹了詳解java 中Spring jsonp 跨域請(qǐng)求的實(shí)例的相關(guān)資料,jsonp 可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問的問題,需要的朋友可以參考下2017-08-08Java SMM框架關(guān)聯(lián)關(guān)系映射示例講解
SSM框架是spring MVC ,spring和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式,將整個(gè)系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring MVC負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)和視圖管理,spring實(shí)現(xiàn)業(yè)務(wù)對(duì)象管理,mybatis作為數(shù)據(jù)對(duì)象的持久化引擎2022-08-08聊聊Kotlin?中?lateinit?和?lazy?的原理區(qū)別
使用 Kotlin 進(jìn)行開發(fā),對(duì)于 latelinit 和 lazy 肯定不陌生。但其原理上的區(qū)別,可能鮮少了解過,借著本篇文章普及下這方面的知識(shí),感興趣的朋友一起看看吧2022-07-07