欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MybatisPlus自定義Sql實(shí)現(xiàn)多表查詢的示例

 更新時(shí)間:2020年08月24日 10:28:51   作者:牟野  
這篇文章主要介紹了MybatisPlus自定義Sql實(shí)現(xiàn)多表查詢的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

前段時(shí)間看同事的代碼,發(fā)現(xiàn)他用Layui+MybatisPlus做分頁查詢做得很規(guī)整,認(rèn)真看了下代碼發(fā)現(xiàn)這種方式不僅適用于與Layui做分頁查詢,在任何時(shí)候需要多表聯(lián)查的時(shí)候都可以用到。
 以下以Layui分頁查詢作為參考,在實(shí)際應(yīng)用中可以靈活使用。

分頁查詢VO對(duì)象

@Data
@AllArgsConstructor
@NoArgsConstructor
public class LayuiData {
  private Integer code=0;
  private Long count;
  private String msg="ok";
  private Object data;
}

Controller

這里的“keyWord”和“registerTime”是后臺(tái)頁面可以查詢的字段,也就是普通的參數(shù),可以靈活變通。

@GetMapping("/getClientList")
@ResponseBody
public LayUIResult getAll(
    @RequestParam(name = "page", required = true, defaultValue = "1") int num,
    @RequestParam(name = "limit", required = true, defaultValue = "10") int size,
    String keyWord, String registerTime){
  IPage<Map<String, Object>> listPage = clientService.findClientPage(num, size, keyWord,registerTime);
  //返回總數(shù)和數(shù)據(jù)
  return new LayuiData (listPage.getTotal(),listPage.getRecords());
}

Service

IPage<Map<String, Object>> findClientPage(Integer num, Integer size, String keyWord, String registerTime);

ServiceImpl

這里的QueryWrapper內(nèi)的實(shí)例是<Map<String, Object>,不是平常的實(shí)體類,返回的也是Map。

@Override
public IPage<Map<String, Object>> findClientPage(Integer num, Integer size, String keyWord, String registerTime) {
  //創(chuàng)建QueryWrapper搜索對(duì)象,判斷參數(shù)不為空則傳入?yún)?shù)
  QueryWrapper<Map<String, Object>> wrapper = new QueryWrapper<>();
  if (StringUtils.isNotEmpty(keyWord)) {
    wrapper.like("c.real_name", keyWord).or().like("c.phone", keyWord);
  }
  if (StringUtils.isNotEmpty(registerTime)) {
    String stime = registerTime.substring(0, 20);
    String etime = registerTime.substring(22, 41);
    wrapper.ge("c.register_time", stime).le("c.register_time", etime);
  }
  //創(chuàng)建分頁對(duì)象
  Page<Map<String, Object>> page = new Page<>(num, size);

  return clientMapper.findClientPage(page, wrapper);
}

Mapper

格式要求,QueryWrapper前面加上@param,括號(hào)里的Constants.WRAPPER內(nèi)容就是"ew",對(duì)應(yīng)xml文件里的ew

IPage<Map<String, Object>> findClientPage(Page<Map<String, Object>> page,@Param(Constants.WRAPPER) QueryWrapper<Map<String, Object>> wrapper);

XML內(nèi)容

重點(diǎn)在于我們用${ew.customSqlSegment}放在sql語句里,它可以直接把我們的wrapper里的查詢數(shù)據(jù)等同于where查詢添加進(jìn)去

<select id="findClientPage" resultType="java.util.Map">
 SELECT c.id,c.real_name,c.phone,c.`status`,
 //實(shí)現(xiàn)將時(shí)間轉(zhuǎn)換成固定格式
 DATE_FORMAT(c.register_time,'%Y-%m-%d %H:%i:%s') registerTime,
 SUM(re.money) rechargeMoney, SUM(wi.withdrawal_money) withdrawalMoney,SUM(buy_money) orderMoney,
 wa.balance
 FROM client c
 LEFT JOIN recharge re ON c.id=re.client_id
 LEFT JOIN withdrawal wi ON c.id=wi.client_id
 LEFT JOIN wallet wa ON c.id=wa.client_id
 LEFT JOIN order_position ord on c.id=ord.client_id
 //重點(diǎn)是這里會(huì)插入wrapper的搜索語句
 ${ew.customSqlSegment}
 GROUP BY c.id
</select>

總結(jié)

這種方式相當(dāng)于在業(yè)務(wù)層已經(jīng)做好了參數(shù)判斷,不用再在xml文件內(nèi)用“if”標(biāo)簽判斷了。
 除了在與Layui做分頁查詢外,在別的需要參數(shù)請(qǐng)求的地方也都可以變通的用這種方法,在使用MybatisPlus時(shí)使用這種方式可以使代碼更簡(jiǎn)潔,更清晰。
 除此之外,在需要多表聯(lián)查的時(shí)候,這種方式是非常適用的。

MybatiPlus文檔

官方文檔里面也做介紹,版本需要大于3.0.7
官方鏈接:使用 Wrapper 自定義SQL

到此這篇關(guān)于MybatisPlus自定義Sql實(shí)現(xiàn)多表查詢的示例的文章就介紹到這了,更多相關(guān)MybatisPlus 多表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基于jdbc連接mysql數(shù)據(jù)庫操作示例

    Java基于jdbc連接mysql數(shù)據(jù)庫操作示例

    這篇文章主要介紹了Java基于jdbc連接mysql數(shù)據(jù)庫操作,結(jié)合完整實(shí)例形式分析了java使用jdbc連接mysql數(shù)據(jù)庫的具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-07-07
  • IDEA2022創(chuàng)建SpringBoot項(xiàng)目的圖文教程

    IDEA2022創(chuàng)建SpringBoot項(xiàng)目的圖文教程

    本文主要介紹了IDEA2022創(chuàng)建SpringBoot項(xiàng)目的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Eclipse git推送上傳錯(cuò)誤問題解決方案

    Eclipse git推送上傳錯(cuò)誤問題解決方案

    這篇文章主要介紹了Eclipse git推送上傳錯(cuò)誤問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Spring Boot中使用Actuator的/info端點(diǎn)輸出Git版本信息

    Spring Boot中使用Actuator的/info端點(diǎn)輸出Git版本信息

    這篇文章主要介紹了Spring Boot中使用Actuator的/info端點(diǎn)輸出Git版本信息,需要的朋友可以參考下
    2017-06-06
  • Java基于zxing生成二維碼矩陣過程解析

    Java基于zxing生成二維碼矩陣過程解析

    這篇文章主要介紹了Java基于zxing生成二維碼矩陣過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • JAVA獲取本地MAC地址的方法

    JAVA獲取本地MAC地址的方法

    這篇文章主要介紹了JAVA獲取本地MAC地址的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java+opencv3.2.0實(shí)現(xiàn)人臉檢測(cè)功能

    Java+opencv3.2.0實(shí)現(xiàn)人臉檢測(cè)功能

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)人臉檢測(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java?String之contains方法的使用詳解

    Java?String之contains方法的使用詳解

    這篇文章主要介紹了Java?String之contains方法的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword

    淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword

    這篇文章主要介紹了淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 記一次Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐

    記一次Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐

    本文主要介紹了Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論