国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - MybatisPlus自定義Sql實(shí)現(xiàn)多表查詢的示例

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

2020-08-25 00:13牟野 Java教程

這篇文章主要介紹了MybatisPlus自定義Sql實(shí)現(xiàn)多表查詢的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

分頁(yè)查詢VO對(duì)象

?
1
2
3
4
5
6
7
8
9
@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)頁(yè)面可以查詢的字段,也就是普通的參數(shù),可以靈活變通。

?
1
2
3
4
5
6
7
8
9
10
@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

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

ServiceImpl

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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)建分頁(yè)對(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

?
1
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語(yǔ)句里,它可以直接把我們的wrapper里的查詢數(shù)據(jù)等同于where查詢添加進(jìn)去

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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的搜索語(yǔ)句
 ${ew.customSqlSegment}
 GROUP BY c.id
</select>

總結(jié)

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

MybatiPlus文檔

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

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

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

原文鏈接:https://blog.csdn.net/weixin_44906271/article/details/105770467

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品在线看 | 日韩精品一区二区三区在线播放 | 日韩欧美一区二区三区免费观看 | 91精品国产九九九久久久亚洲 | 最好的2019中文大全在线观看 | 国产伦精品一区二区三区四区视频 | 视频在线一区二区 | 国产精品成人一区二区三区 | 吴梦梦到粉丝家实战华中在线观看 | 午夜影院在线 | 国产在线小视频 | 国产一区亚洲二区三区 | 日本日韩中文字幕 | 日韩精品一区二区三区 | 午夜小电影 | 天天操夜夜操 | 综合色播 | 欧美激情区 | 在线不卡视频 | 日韩精品一区二区三区中文在线 | 狠狠干最新网址 | 黄色国产视频 | 国产精品一二三区视频出来一 | 国产精品ssss在线亚洲 | 中文字幕视频在线观看 | 免费av在线网站 | 欧美成人a| 老色批影院 | 北条麻妃99精品青青久久 | 欧美日韩国产一区二区三区 | 亚洲欧美影院 | 国产成人精品免费视频大全最热 | 我要看日本黄色小视频 | 日韩专区视频 | 欧美精三区欧美精三区 | 日韩欧美中字 | 久久亚洲一区 | 色综合天天综合网国产成人网 | 久久久美女 | 欧美精品不卡 | av不卡在线播放 |