亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

MybatisPlus自定義Sql實現多表查詢的示例

瀏覽:105日期:2023-10-23 10:26:47

前言

前段時間看同事的代碼,發現他用Layui+MybatisPlus做分頁查詢做得很規整,認真看了下代碼發現這種方式不僅適用于與Layui做分頁查詢,在任何時候需要多表聯查的時候都可以用到。 以下以Layui分頁查詢作為參考,在實際應用中可以靈活使用。

分頁查詢VO對象

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

Controller

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

@GetMapping('/getClientList')@ResponseBodypublic 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); //返回總數和數據 return new LayuiData (listPage.getTotal(),listPage.getRecords());}

Service

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

ServiceImpl

這里的QueryWrapper內的實例是<Map<String, Object>,不是平常的實體類,返回的也是Map。

@Overridepublic IPage<Map<String, Object>> findClientPage(Integer num, Integer size, String keyWord, String registerTime) { //創建QueryWrapper搜索對象,判斷參數不為空則傳入參數 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); } //創建分頁對象 Page<Map<String, Object>> page = new Page<>(num, size); return clientMapper.findClientPage(page, wrapper);}

Mapper

格式要求,QueryWrapper前面加上@param,括號里的Constants.WRAPPER內容就是'ew',對應xml文件里的ew

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

XML內容

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

<select resultType='java.util.Map'> SELECT c.id,c.real_name,c.phone,c.`status`, //實現將時間轉換成固定格式 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 //重點是這里會插入wrapper的搜索語句 ${ew.customSqlSegment} GROUP BY c.id</select>

總結

這種方式相當于在業務層已經做好了參數判斷,不用再在xml文件內用“if”標簽判斷了。 除了在與Layui做分頁查詢外,在別的需要參數請求的地方也都可以變通的用這種方法,在使用MybatisPlus時使用這種方式可以使代碼更簡潔,更清晰。 除此之外,在需要多表聯查的時候,這種方式是非常適用的。

MybatiPlus文檔

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

MybatisPlus自定義Sql實現多表查詢的示例

到此這篇關于MybatisPlus自定義Sql實現多表查詢的示例的文章就介紹到這了,更多相關MybatisPlus 多表查詢內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 喷潮白浆直流在线播放 | 簧片在线免费看 | 日韩日b视频 | 日韩一区二区在线观看 | 亚洲精品日韩中文字幕久久久 | 国产免费资源 | 国产综合第一页在线视频 | 日韩中文字幕在线播放 | 性激烈的欧美三级高清视频 | 嗯!啊!使劲用力在线观看 | 亚洲国产成人手机在线电影bd | 99久久国产综合精品女不卡 | 国产国语一级毛片 | 久久精品国产999大香线焦 | 国内精品久久国产 | 日韩黄色在线观看 | 久久婷婷在线 | 亚洲成人午夜影院 | 国产大尺度吃奶无遮无挡 | 成人老司机深夜福利久久 | 欧美小younv| 亚洲综合激情另类图片专区 | 日本高清中文字幕一区二区三区 | 亚洲免费一区二区 | 亚洲一级特黄特黄的大片 | 爱爱www在线观看视频高清 | 日韩精品一区二区三区免费观看 | 日韩二区三区 | 精品区在线观看 | 久久国产自偷自偷免 | 在线播放另类 | 91视频麻豆 | 国产精品杨幂va在线观看 | 久久精品国产精品亚洲精品 | 亚洲成人综合视频 | 91精品欧美综合在线观看 | 牛牛在线| 中国黄色一级大片 | 特级aaaaaaaaa毛片免费视频 | 亚洲欧洲一二三区机械有限公司 | 一级毛片真人免费播放视频 |