MybatisPlus查詢條件為空字符串或null問題及解決
查詢條件為空字符串或null問題
問題描述
工作種當(dāng)使用mybatisplus框架進(jìn)行條件查詢時,會出現(xiàn)參數(shù)為空字符串或者null也走查詢條件,寫一篇文章記錄一下。
String name = "張三"; LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); lqw.eq(User::getName, name); List<User> userList = userMapper.selectList(lqw);
// 當(dāng)name為空字符串或null時,最后生成的sql會變成 SELECT * FROM user WHERE name = ''; SELECT * FROM user WHERE name = null;
這就不好查了。
解決辦法
mybatisplus的條件構(gòu)造器方法 eq()、like()等這些方法能支持第三個參數(shù) condition

condition是一個布爾值,當(dāng)condition為false
時,當(dāng)前這個條件方法不會生效,即生成的sql不會拼接這個條件;所以在這個參數(shù)里判斷查詢參數(shù)是否為空即可。
lqw.eq(StringUtils.hasText(name), User::getName, name);
主要還是對mybatis-plus不熟悉導(dǎo)致的。
查詢表的時候有些字段為空問題
親測,已經(jīng)解決
yaml:
mybatis:
mapper-locations: classpath:mapper/*.xml
# config-location: classpath:mybatis/mybatis-config.xml
configuration:
map-underscore-to-camel-case: true #開啟駝峰命名模式商品ID和品牌ID都是為空。

因為我在Product、和ProductDto里的字段:store_id, brand_id
因為yaml配置開啟了駝峰,所以就不能映射到數(shù)據(jù)庫表中的store_id和brand_id字段。
所以把數(shù)據(jù)庫字段和javaBean、Dto的字段都設(shè)置為駝峰命名就可以了。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何用Java結(jié)合經(jīng)緯度位置計算目標(biāo)點的日出日落時間詳解
這篇文章主詳細(xì)講解了如何基于目標(biāo)點的經(jīng)緯度計算日出日落時間,提供了在線API和Java庫兩種計算方法,并通過實際案例展示了其應(yīng)用,需要的朋友可以參考下2025-01-01
Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)
本文詳細(xì)介紹了Spring Boot中Tomcat和Undertow服務(wù)器的配置和優(yōu)化,包括初始線程數(shù)、最大線程數(shù)、最小備用線程數(shù)、最大請求數(shù)等參數(shù)的優(yōu)化建議,以及在高并發(fā)場景下Undertow相對于Tomcat的優(yōu)勢2024-12-12
java可變參數(shù)當(dāng)做數(shù)組處理的方法示例
這篇文章主要介紹了java可變參數(shù)當(dāng)做數(shù)組處理的方法,結(jié)合實例形式分析了java可變參數(shù)當(dāng)做數(shù)組處理相關(guān)原理、步驟與操作注意事項,需要的朋友可以參考下2019-09-09
Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié)
Spring Cloud Gateway是Spring Cloud的?個全新的API?關(guān)項?, 基于Spring + SpringBoot等技術(shù)開發(fā), ?的是為了替換掉Zuul,這篇文章主要介紹了Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié),需要的朋友可以參考下2025-03-03
SpringCloud配置客戶端ConfigClient接入服務(wù)端
這篇文章主要為大家介紹了SpringCloud配置客戶端ConfigClient接入服務(wù)端,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

