mybatis plus多表查询如何实现?租用日本多ip站群服务器怎么搭建网站?
这期内容当中小编将会给大家带来有关mybatis plus多表查询如何实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
前言
前段时间看同事的代码,发现他用Layui+MybatisPlus做分页查询做得很规整,认真看了下代码发现这种方式不仅适用于与Layui做分页查询,在任何时候需要多表联查的时候都可以用到。
以下以Layui分页查询作为参考,在实际应用中可以灵活使用。
分页查询VO对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LayuiData {
private Integer code=0;
private Long count;
private String msg="ok";
private Object data;
}
Controller
这里的“keyWord”和“registerTime”是后台页面可以查询的字段,也就是普通的参数,可以灵活变通。
@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> listPage = clientService.findClientPage(num, size, keyWord,registerTime);
//返回总数和数据
return new LayuiData (listPage.getTotal(),listPage.getRecords());
}
Service
IPage> findClientPage(Integer num, Integer size, String keyWord, String registerTime);
ServiceImpl
这里的QueryWrapper内的实例是,不是平常的实体类,返回的也是Map。
@Override
public IPage> findClientPage(Integer num, Integer size, String keyWord, String registerTime) {
//创建QueryWrapper搜索对象,判断参数不为空则传入参数
QueryWrapper> 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> page = new Page<>(num, size);
return clientMapper.findClientPage(page, wrapper);
}
Mapper
格式要求,QueryWrapper前面加上@param,括号里的Constants.WRAPPER内容就是"ew",对应xml文件里的ew
IPage> findClientPage(Page> page,@Param(Constants.WRAPPER) QueryWrapper> wrapper);
XML内容
重点在于我们用${ew.customSqlSegment}放在sql语句里,它可以直接把我们的wrapper里的查询数据等同于where查询添加进去
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
总结
这种方式相当于在业务层已经做好了参数判断,不用再在xml文件内用“if”标签判断了。
除了在与Layui做分页查询外,在别的需要参数请求的地方也都可以变通的用这种方法,在使用MybatisPlus时使用这种方式可以使代码更简洁,更清晰。
除此之外,在需要多表联查的时候,这种方式是非常适用的。
纵横云日本多ip站群服务器租用地址:https://www.zonghengcloud.com/zhanqun/riben.html
租用日本多ip站群服务器怎么搭建网站?纵横云日本多ip站群服务器配置推荐:
1、日本多ip站群服务器租用套餐一
CPU E3 1230
内存 16GB
硬盘 1T SATA
带宽 10M
IP数量 253个
IP段 1个整C段
机房 日本机房
价格 1799元一月
2、日本多ip站群服务器租用套餐二
CPU E5 2660v2
内存 16GB
硬盘 1T SATA
带宽 15M
IP数量 244个
IP段 4个C段(每个C段61个IP)
机房 日本机房
价格 1950元一月
3、日本多ip站群服务器租用套餐三
CPU E5 2660v2*2
内存 32GB
硬盘 1T SATA
带宽 20M
IP数量 244个
IP段 4个C段(每个C段61个IP)
机房 日本机房
价格 2200元一月
纵横云专业提供多ip站群服务器租用,包括日本多ip站群服务器租用、美国多ip站群服务器租用、韩国多ip站群服务器租用、南非多ip站群服务器租用、香港多ip站群服务器租用、台湾多ip站群服务器租用等,有需要的朋友可以咨询我们,官网:https://www.zonghengcloud.com/,QQ:3494196421,微信:19906048603。