QueryWrapper中查詢的坑及解決
QueryWrapper中查詢的坑
首先,先看代碼示例
List<Entity> list = testService.list(
? ? ? ? ? ? ? ? ? ? new LambdaQueryWrapper<Entity>()
? ? ? ? ? ? ? ? ? ? ? ? ? ? .eq(ObjectUtils.isNotEmpty(req.getParam()),Entity::getParam,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? req.getParam().substring(0,7).replace("-",""))
);正常邏輯,當(dāng)ObjectUtils.isNotEmpty(req.getParam())為false的時(shí)候,所執(zhí)行的SQL不會(huì)出現(xiàn)當(dāng)前條件的字段;
然而,這種寫法如果當(dāng)req.getParam()為""的時(shí)候,程序會(huì)出現(xiàn)數(shù)組下標(biāo)越界的錯(cuò)誤,雖然前面條件未成立,但是后面的代碼依然編譯執(zhí)行;
此處是本猿自己工作中遇到的一些小問題,發(fā)表出來,以便記錄,也給路過的伙伴提個(gè)醒。
QueryWrapper的查詢方法
Wrapper: 條件構(gòu)造抽象類,最頂端父類AbstractWrapper: 用于查詢條件封裝,生成 sql 的 where 條件QueryWrapper: Entity 對(duì)象封裝操作類,不是用lambda語法UpdateWrapper: Update 條件封裝,用于Entity對(duì)象更新操作AbstractLambdaWrapper: Lambda 語法使用 Wrapper統(tǒng)一處理解析 lambda 獲取 column。LambdaQueryWrapper: 看名稱也能明白就是用于Lambda語法使用的查詢WrapperLambdaUpdateWrapper: Lambda 更新封裝Wrapper
QueryWrapper
@Test
? ? public void squery() {
? ? ? ? //創(chuàng)建QueryWrapper 對(duì)象
? ? ? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? ? ? //ge gt le lt: 大于等于 大于 小于等于 小于
? ? ? ? queryWrapper.ge("age",29);
? ? ? ? List<User> users = userMapper.selectList(queryWrapper);
? ? ? ? System.out.println(users);
? ? ? ??
? ? ? ? //eq ne ?等于 不等于
? ? ? ? //between 介于查詢
? ? ? ? queryWrapper.between("age",28,30);
? ? ? ? List<User> users1 = userMapper.selectList(queryWrapper);
? ? ? ? System.out.println(users1);
? ? ? ??
? ? ? ? //模糊查詢
? ? ? ? queryWrapper.like("nam","l");
? ? ? ? queryWrapper.select("id","nam");
? ? ? ? List<User> users2 = userMapper.selectList(queryWrapper);
? ? ? ? System.out.println(users2);
? ? ? ??
? ? ? ? // orderByDesc 降序查找
? ? ? ? queryWrapper.orderByDesc;
? ? ? ??
? ? ? ? //last 在sql語句后面拼接
? ? ? ? queryWrapper.last("limit 1");
? ? }以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java動(dòng)態(tài)規(guī)劃篇之線性DP的示例詳解
這篇文章主要通過幾個(gè)例題為大家詳細(xì)介紹一些Java動(dòng)態(tài)規(guī)劃中的線性DP,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下2022-11-11
IDEA工程運(yùn)行時(shí)總是報(bào)xx程序包不存在實(shí)際上包已導(dǎo)入(問題分析及解決方案)
這篇文章主要介紹了IDEA工程運(yùn)行時(shí),總是報(bào)xx程序包不存在,實(shí)際上包已導(dǎo)入,本文給大家分享問題分析及解決方案,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-08-08
SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟
當(dāng)需要獲取配置文件中很多參數(shù)時(shí),我們可以定義參數(shù)的前綴相同,通過自動(dòng)映射 進(jìn)行獲取配置文件中參數(shù),所以本文給大家介紹了SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟,需要的朋友可以參考下2024-11-11
SpringBoot 防止接口惡意多次請(qǐng)求的操作
這篇文章主要介紹了SpringBoot 防止接口惡意多次請(qǐng)求的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
淺析Spring的事務(wù)實(shí)現(xiàn)原理
這篇文章主要為大家詳細(xì)介紹了Spring中事務(wù)實(shí)現(xiàn)的原理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的可以參考一下2022-11-11
java實(shí)現(xiàn)上傳文件類型檢測(cè)過程解析
這篇文章主要介紹了java實(shí)現(xiàn)上傳文件類型檢測(cè)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
SpringCloud使用Feign實(shí)現(xiàn)動(dòng)態(tài)路由操作
這篇文章主要介紹了SpringCloud使用Feign實(shí)現(xiàn)動(dòng)態(tài)路由操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06

