MybatisPlus查詢條件為空字符串或null問題及解決
查詢條件為空字符串或null問題
問題描述
工作種當(dāng)使用mybatisplus框架進(jìn)行條件查詢時(shí),會(huì)出現(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時(shí),最后生成的sql會(huì)變成 SELECT * FROM user WHERE name = ''; SELECT * FROM user WHERE name = null;
這就不好查了。
解決辦法
mybatisplus的條件構(gòu)造器方法 eq()、like()等這些方法能支持第三個(gè)參數(shù) condition
condition是一個(gè)布爾值,當(dāng)condition為false
時(shí),當(dāng)前這個(gè)條件方法不會(huì)生效,即生成的sql不會(huì)拼接這個(gè)條件;所以在這個(gè)參數(shù)里判斷查詢參數(shù)是否為空即可。
lqw.eq(StringUtils.hasText(name), User::getName, name);
主要還是對(duì)mybatis-plus不熟悉導(dǎo)致的。
查詢表的時(shí)候有些字段為空問題
親測,已經(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都是為空。
因?yàn)槲以赑roduct、和ProductDto里的字段:store_id, brand_id
因?yàn)閥aml配置開啟了駝峰,所以就不能映射到數(shù)據(jù)庫表中的store_id和brand_id字段。
所以把數(shù)據(jù)庫字段和javaBean、Dto的字段都設(shè)置為駝峰命名就可以了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring+maven實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了spring+maven實(shí)現(xiàn)發(fā)送郵件功能,利用spring提供的郵件工具來發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07SpringBoot實(shí)現(xiàn)發(fā)送電子郵件
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送電子郵件,電子郵件是—種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應(yīng)用最廣的服務(wù)。通過網(wǎng)絡(luò)的電子郵件系統(tǒng),用戶可以非常快速的方式,與世界上任何一個(gè)角落的網(wǎng)絡(luò)用戶聯(lián)系,下面就來看看SpringBoot如何實(shí)現(xiàn)發(fā)送電子郵件吧2022-01-01springboot+mybatis配置clickhouse實(shí)現(xiàn)插入查詢功能
這篇文章主要介紹了springboot+mybatis配置clickhouse實(shí)現(xiàn)插入查詢功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08SpringCloud微服務(wù)之Hystrix組件實(shí)現(xiàn)服務(wù)熔斷的方法
微服務(wù)架構(gòu)特點(diǎn)就是多服務(wù),多數(shù)據(jù)源,支撐系統(tǒng)應(yīng)用。這樣導(dǎo)致微服務(wù)之間存在依賴關(guān)系。這篇文章主要介紹了SpringCloud微服務(wù)之Hystrix組件實(shí)現(xiàn)服務(wù)熔斷的方法,需要的朋友可以參考下2019-08-08Spring Security 圖片驗(yàn)證碼功能的實(shí)例代碼
spring security是一系列的過濾器鏈,所以在這里驗(yàn)證碼也聲明為過濾器,加在過濾器鏈的 登錄過濾器之前,然后自定義一個(gè)異常類,來響應(yīng)驗(yàn)證碼的錯(cuò)誤信息.這篇文章主要介紹了Spring Security 圖片驗(yàn)證碼,需要的朋友可以參考下2018-03-03Java Apollo是如何實(shí)現(xiàn)配置更新的
這篇文章主要介紹了Java Apollo是如何實(shí)現(xiàn)配置更新的,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03java中使用雙向鏈表實(shí)現(xiàn)貪吃蛇程序源碼分享
這篇文章主要介紹了java中使用雙向鏈表實(shí)現(xiàn)貪吃蛇程序源碼分享,本文直接給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03java分頁攔截類實(shí)現(xiàn)sql自動(dòng)分頁
這篇文章主要為大家詳細(xì)介紹了java分頁攔截類可以實(shí)現(xiàn)sql自動(dòng)分頁,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11