uniapp开发app框架在提升开发效率中的独特优势与应用探索
684
2023-04-25
MybatisPlus自定义Sql实现多表查询的示例
前言
前段时间看同事的代码,发现他用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<Map
//返回总数和数据
return new LayuiData (listPage.getTotal(),listPage.getRecords());
}
Service
IPage<Map
ServiceImpl
这里的QueryWrapper内的实例是
@Override
public IPage
WYIuUCmdR //创建QueryWrapper搜索对象,判断参数不为空则传入参数
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
return clientMapper.findClientPage(page, wrapper);
}
Mapper
格式要求,QueryWrapper前面加上@param,括号里的Constants.WRAPPER内容就是"ew",对应xml文件里的ew
IPage
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.clWYIuUCmdRient_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时使用这种方式可以使代码更简洁,更清晰。
除此之外,在需要多表联查的时候,这种方式是非常适用的。
MybatiPlus文档
官方文档里面也做介绍,版本需要大于3.0.7
官方链接:使用 Wrapper 自定义SQL
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~