国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
5.mybatisPlus自定義SQL_mybatisplus 自定義sql

今日內(nèi)容

MP自帶的條件構(gòu)造器雖然很強(qiáng)大,有時(shí)候也避免不了寫稍微復(fù)雜一點(diǎn)業(yè)務(wù)的sql,比如多表查詢。

那么那么今天說(shuō)說(shuō)MP怎么自定義sql語(yǔ)句吧。另外,除了下文提到的通過(guò)queryWrapper實(shí)現(xiàn)篩選以外,調(diào)用查詢時(shí),如果你需要做分頁(yè),通過(guò)mybatisPlus提供的分頁(yè)接口IPage,能夠避免自己手寫分頁(yè)的sql語(yǔ)句,這么好用的東西,你還不入坑嗎?

QueryWrapper\Wrapper聯(lián)系

總結(jié):QueryWrapper是Wrapper下面的類。 -->完全可以用到多態(tài);令QueryWrapper實(shí)例指向Wrapper對(duì)象。 記?。憾鄳B(tài),參數(shù)類型是Wrapper類型,調(diào)用者傳遞QueryWrapper類型。

因?yàn)楣俜轿臋n里面寫的參數(shù)類型都是父級(jí)類型,不要再說(shuō)看不懂官方文檔。

wapper介紹 :
Wrapper : 條件構(gòu)造抽象類,最頂端父類,抽象類中提供4個(gè)方法
AbstractWrapper : 用于查詢條件封裝,生成 sql 的 where 條件
AbstractLambdaWrapper : Lambda 語(yǔ)法使用 Wrapper統(tǒng)一處理解析 lambda 獲取 column。
LambdaQueryWrapper : 看名稱也能明白就是用于Lambda語(yǔ)法使用的查詢Wrapper
LambdaUpdateWrapper : Lambda 更新封裝Wrapper
QueryWrapper : Entity 對(duì)象封裝操作類,不是用lambda語(yǔ)法
UpdateWrapper : Update 條件封裝,用于Entity對(duì)象更新操作
————————————————
版權(quán)聲明:本文為CSDN博主「簡(jiǎn)素@」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43048586/article/details/90025128

使用 Wrapper 自定義SQL

需求來(lái)源:

在使用了mybatis-plus之后, 自定義SQL的同時(shí)也想使用Wrapper的便利應(yīng)該怎么辦? 在mybatis-plus版本3.0.7得到了完美解決 版本需要大于或等于3.0.7, 以下兩種方案取其一即可

mybatisPlus的條件構(gòu)造器進(jìn)行簡(jiǎn)單的操作還行,但是我的復(fù)雜操作如多表查詢,條件構(gòu)造器就顯得捉襟見肘了。

還有一個(gè)更重要的原因:我想用他的分頁(yè)插件。 如果我使用mybatis寫法就不能使用mybatisPlus的分頁(yè)插件了。

自定義SQL-官方文檔

${ew.sqlSegment} 是補(bǔ)充條件的—QueryWrapper的條件構(gòu)造器的條件。

官方文檔寫的有點(diǎn)籠統(tǒng),現(xiàn)在我們看看網(wǎng)友的詳細(xì)寫法:

Mybatis-plus中自定義的sql語(yǔ)句調(diào)用QueryWrapper實(shí)現(xiàn)查詢

這個(gè)只是講述了自定義sql,沒有涉及自定義sql和分頁(yè)一起的使用。

網(wǎng)址案例通過(guò)測(cè)試是成功的。

但這往往不夠,實(shí)際我們會(huì)使用更多復(fù)雜的sql語(yǔ)句。會(huì)往自定義sql語(yǔ)句里面?zhèn)鬟f值,會(huì)需要分頁(yè)。

自定義SQL/分頁(yè)/條件構(gòu)造器一起使用返回分頁(yè)數(shù)據(jù)

[MyBatis-Plus 分頁(yè)查詢以及自定義sql分頁(yè)(很好的文檔)]

這是三大技術(shù)點(diǎn)整合,看見分頁(yè)技術(shù)就知道結(jié)果一定是返回分頁(yè)的數(shù)據(jù)的。

當(dāng)然,如果是自定義SQL和條件構(gòu)造器兩個(gè)技術(shù)整合,我們返回的是集合。

記住:分頁(yè)不過(guò)也是limit語(yǔ)句,也是sql語(yǔ)句罷了,不要想太神。

注意:這個(gè)條件構(gòu)造器與兩外兩個(gè)技術(shù)整合一起使用的前提有點(diǎn)苛刻,要求返回?cái)?shù)據(jù)model格式必須是和這個(gè)表的字段對(duì)應(yīng),然后在表明的后面幫我們添加一系列條件。–${ew.sqlSegment} 是補(bǔ)充條件的,他的位置決定你的條件構(gòu)造器的條件加到哪里。

但是,可能有時(shí)候我們的sql語(yǔ)句過(guò)于復(fù)雜,在多表查詢的時(shí)候需要你傳遞一個(gè)參數(shù)或幾個(gè)參數(shù)。放心,條件構(gòu)造器該用就用,判斷好位置就行;這幾個(gè)參數(shù)該傳就傳,和mybatis操作一樣。

web核輻射真實(shí)案例

controller

 //初始化頁(yè)面
    @GetMapping("/baoJingList")
    @ResponseBody
   // @RequiresPermissions("fushe:baojing:baojing")
    Map<String,Object> roleList(@RequestParam Map<String, Object> params){
        Long currrentPage =Long.parseLong(params.get("page")+"");
        Long size =Long.parseLong(params.get("limit")+"");
        String sheBeiAdd = params.get("SheBeiId")+"";
        Long deptId = Long.parseLong(params.get("deptId")+"");

        QueryWrapper<EaBaojing> queryWrapper =  new QueryWrapper<>();
        queryWrapper.orderByDesc("Id");//降序
        if( sheBeiAdd.length()!=0) { //如果username沒有數(shù)據(jù)為"",則不加入條件
            queryWrapper.like("SheBeiId", params.get("SheBeiId") + "");//條件構(gòu)造器
        }
        if( deptId!=-1) {
            //表格過(guò)濾
            List<Integer> depts =sysDeptMapper.deptListByDeptId(deptId.intValue());
            depts.add(deptId.intValue());
            queryWrapper.in("Memo", depts);//條件構(gòu)造器
        }

        Page<EaBaojing> page = new Page( currrentPage, size);  // 查詢第x頁(yè),每頁(yè)返回x條
        //條件構(gòu)造器+自定義sql+分頁(yè),三大技術(shù)給你整合好好的,mybatisplus厲害。
        IPage<EaBaojing> iPage =baojingMapper.selectListByWrapper(page,queryWrapper);


        Map<String,Object> map = new HashMap<>();
        map.put("total",iPage.getTotal());  //
        map.put("data",iPage.getRecords()); //返回的數(shù)據(jù)是selectListByWrapper
        return map;
    }

}

mapper.java

public interface EaBaojingMapper extends BaseMapper<EaBaojing> {

    //參數(shù)里面?zhèn)鬟f的是我們?cè)谡{(diào)用這個(gè)方法的包裝類型,Wrapper是抽象類,querywrapper繼承了他。
    IPage<EaBaojing> selectListByWrapper(Page<EaBaojing> page, @Param(Constants.WRAPPER) Wrapper<EaBaojing> queryWrapper);

}

mapper.xml

    <select id="selectListByWrapper" resultType="com.hdeasy.fushe.entity.EaBaojing">
    SELECT * FROM (
       SELECT a.id, a.fushe,a.baojingtype,a.content,a.yujing,a.baojing,a.riqi,a.memo,b.shebeiname
               AS shebeiid FROM ea_baojing  a LEFT JOIN ea_shebei b ON a.shebeiid = b.address
          )c ${ew.customSqlSegment}
    </select>

${ew.customSqlSegment}的位置決定了條件構(gòu)造器的條件在哪。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
熟練掌握 mybatis-plus,一篇就夠!
MyBatisPlus學(xué)習(xí)整理
mybatis-plus的使用 ----- 進(jìn)階
MyBatis-Plus配置日志與CRUD
LambdaQueryWrapper&QueryWrapper增刪改CURD使用教程案例
MyBatis:條件構(gòu)造器QueryWrapper方法詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服