平时开发的时候都是单表使用 MybatisPlus 进行条件查询,这次有个功能需要多表联查,便在开发结束后记录下。
(开发属于内网,无贴图。)
Controller 层接收的参数,三个,DTO,page,size。DTO是包含所有条件属性的类。
单表的时候分页条件查询如下步骤:
创建条件
QueryWrapper<T>wrapper = new QueryWrapper<>();
wrapper.eq("列名","参数值");
创建分页
Page<T> page = new Page<>(page, size);
调用,且不用在mapper.xml文件中自定义sql
mapper.selectPage(page, wrapper);
即可。
多表分页条件查询,首先 mapper.xml 里面要手写 sql , 最后的 where 条件不用写,用 ${ew.customSqlSegment} 替代。例如:
select t1.*, t2.*
from t1 inner join t2
on t1.id = t2.id
${ew.customSqlSegment}
Mapper类接口继承BaseMapper,当前方法传参需要定义成如下所示。
IPage<T> queryTest(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> wrapper);
届时在service层中写逻辑调用该方法时和单表一样即可。
仅做个人参考资料,写的不好请见谅。
有疑问可+V sucan_27 备注 csdn ,欢迎一起讨论。