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中this.getClass()和super.getClass()的實(shí)例
這篇文章主要介紹了詳解java中this.getClass()和super.getClass()的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-08-08使用JAVA實(shí)現(xiàn)郵件發(fā)送功能的圖文教程
郵件發(fā)送其實(shí)是一個(gè)非常常見的需求,用戶注冊(cè),找回密碼等地方,都會(huì)用到,下面這篇文章主要給大家介紹了關(guān)于使用JAVA實(shí)現(xiàn)郵件發(fā)送功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06MyBatis攔截器:給參數(shù)對(duì)象屬性賦值的實(shí)例
下面小編就為大家?guī)硪黄狹yBatis攔截器:給參數(shù)對(duì)象屬性賦值的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04Java源碼難點(diǎn)突破Lambda表達(dá)式執(zhí)行原理
這篇文章主要為大家介紹了Java難點(diǎn)突破Lambda表達(dá)式執(zhí)行原理分析及示例的實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03