MyBatisPlus之AbstractWrapper


說明:

QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父類
用於生成 sql 的 where 條件, entity 屬性也用於生成 sql 的 where 條件
注意: entity 生成的 where 條件與 使用各個 api 生成的 where 條件沒有任何關聯行為

 

allEq(Map<R, V> params)
allEq(Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, Map<R, V> params, boolean null2IsNull)

 

個別參數說明:

params : key為數據庫字段名,value為字段值
null2IsNull : 為true則在mapvaluenull時調用 isNull 方法,為false時則忽略valuenull

 

例1: allEq({id:1,name:"老王",age:null})--->id = 1 and name = '老王' and age is null
例2: allEq({id:1,name:"老王",age:null}, false)--->id = 1 and name = '老王'

 

allEq(BiPredicate<R, V> filter, Map<R, V> params)
allEq(BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull) 

個別參數說明:

filter : 過濾函數,是否允許字段傳入比對條件中
params 與 null2IsNull : 同上

 

例1: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null})--->name = '老王' and age is null
例2: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null}, false)--->name = '老王'

 

eq(R column, Object val)
eq(boolean condition, R column, Object val)

 

eq("name", "老王")--->name = '老王'

 

 

ne(R column, Object val)
ne(boolean condition, R column, Object val)

 

 

例: ne("name", "老王")--->name <> '老王'

 

 

gt(R column, Object val)
gt(boolean condition, R column, Object val)

 

例: gt("age", 18)--->age > 18

 

 

ge(R column, Object val)
ge(boolean condition, R column, Object val)

 

 

例: ge("age", 18)--->age >= 18

 

lt(R column, Object val)
lt(boolean condition, R column, Object val)

 

例: lt("age", 18)--->age < 18

 

 

le(R column, Object val)
le(boolean condition, R column, Object val)

 

例: le("age", 18)--->age <= 18

 

 

 

 

 

/**
 * 帶條件的分頁查詢
 * @param current
 * @param limit
 * @param teacherQuery
 * @return
 */
@Override
public Page<EduTeacher> pageListTeacherCondition(long current, Long limit, TeacherQuery teacherQuery){

    //創建Page對象
    Page<EduTeacher> eduTeacherPage = new Page<>(current,limit);

    //構建條件
    QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();

    //獲取傳入講師的條件是否為空
    //講師名
    String name = teacherQuery.getName();
    //講師級別
    Integer level = teacherQuery.getLevel();
    //開始時間
    String gmtCreate = teacherQuery.getGmtCreate();
    //結束時間
    String gmtModified = teacherQuery.getGmtModified();

    //多條件組合查詢
    //判斷條件值是否為空,如果不為空拼接條件
    if (!StringUtils.isEmpty(name)){
        //構建條件 模糊查詢
        wrapper.like("name",name);
    }

    if (!StringUtils.isEmpty(level)){
        //等於
        wrapper.eq("level",level);
    }

    if (!StringUtils.isEmpty(gmtCreate)){
        //大於等於
        wrapper.ge("gmt_create",gmtCreate);
    }

    if (!StringUtils.isEmpty(gmtModified)){
        //小於等於
        wrapper.le("gmt_modified",gmtModified);
    }

    //調用mybatis plus分頁方法進行查詢
    eduTeacherMapper.selectPage(eduTeacherPage,wrapper);

    //通過Page對象獲取分頁信息
    //long current = page.getCurrent();//當前頁
    List<EduTeacher> records = eduTeacherPage.getRecords(); //每頁的數據 list集合
    //long size = eduTeacherPage.getSize(); //每頁顯示的條數
    long total = eduTeacherPage.getTotal(); //總記錄數
    long pages = eduTeacherPage.getPages(); //總頁數

    boolean pagehasNext = eduTeacherPage.hasNext(); //下一頁
    boolean pagehasPrevious = eduTeacherPage.hasPrevious(); //上一頁
    
    return eduTeacherPage;
}

 

select * from user where id in [ 1,2,3] and (user_name like '%'+userName+'%' or address like '%'+address+'%';

 

EntityWrapper<userEntity> entityEntityWrapper = new EntityWrapper<>();
//在這里我們使用MP的selectPage方法去查,關於MP搭建可以去看之前的博文(關於mybatis-plus的)
 
Page<userEntity> userList= qdDeviceService.selectPage(new Page<userEntity>(),
//先來構建in的條件
                entityEntityWrapper.in("device_id",ids)
//之后以and連接並列的條件 后面更1=1 來保持成立的確定性
                        .and("1=1")
//之后再以like來拼接你所需要的模糊查詢
                        .like("user_name", (String) params.get("userName"))
                        .like("address", (String) params.get("address"))
        );
//以上就是EntityWrapper的方式去查詢

 

QueryWrapper<userEntity> userWrapper = new QueryWrapper<>();
String userName= (String) map.get("userName");
String address= (String) map.get("address");
 
 
userWrapper.and(wrapper -> wrapper.like("user_name", userName).or().like("address", address);

 

 LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Article::getCatId,10);
        queryWrapper.and(x->x.like(Article::getKeywords,keywords).or().like(Article::getTitle,keywords));
        queryWrapper.select(Article::getAuthor,Article::getCode,Article::getChildTitle,Article::getTitle);
        List<Article> articles = articleMapper.selectList(queryWrapper);
        articles.forEach(x-> System.out.println("文章關鍵字:" + x.getKeywords() + ",文章標題:" + x.getTitle()));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM