MybatisPlus查詢條件為空字符串或null問題及解決
查詢條件為空字符串或null問題
問題描述
工作種當(dāng)使用mybatisplus框架進行條件查詢時,會出現(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)文章
spring+maven實現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細介紹了spring+maven實現(xiàn)發(fā)送郵件功能,利用spring提供的郵件工具來發(fā)送郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07springboot+mybatis配置clickhouse實現(xiàn)插入查詢功能
這篇文章主要介紹了springboot+mybatis配置clickhouse實現(xiàn)插入查詢功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08SpringCloud微服務(wù)之Hystrix組件實現(xiàn)服務(wù)熔斷的方法
微服務(wù)架構(gòu)特點就是多服務(wù),多數(shù)據(jù)源,支撐系統(tǒng)應(yīng)用。這樣導(dǎo)致微服務(wù)之間存在依賴關(guān)系。這篇文章主要介紹了SpringCloud微服務(wù)之Hystrix組件實現(xiàn)服務(wù)熔斷的方法,需要的朋友可以參考下2019-08-08