java 多表分页_MyBatisPlus分页多表关联查询
spring+spring mvc mybatis整合
113.5元
包邮
(需用券)
去购买 >
BaseMapper提供的默认查询方法都是单表的,如果需要多表关联查询,同时还要支持分页,一个方案就是自己写Sql。
现在自己写Sql一般用的应该不是传统MyBatis那种写xml的老方法,而是通过在Mapper类里写注解来实现。
还需要解决的就是如何在自定义Sql语句中拼接MyBatisPlus的分页参数和查询条件。
示例如下:public interface GameQueryMapper extends BaseMapper {
String querySql = "SELECT a.*, b.org_id FROM t_game AS a LEFT JOIN t_game_game_org AS b ON b.game_id = a.id ";
String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";
/**
* 分页查询
*/
@Select(wrapperSql)
Page page(Page page, @Param("ew") Wrapper queryWrapper);
/**
* 普通查询
*/
@Select(wrapperSql)
List list(@Param("ew") Wrapper queryWrapper);
/**
* 单独查询
*/
@Select(wrapperSql)
QyyOrgQuery one(@Param("ew") Wrapper queryWrapper);
}
关键在于Sql字符串最后那一句${ew.customSqlSegment},是用来拼接LambdaQueryWrapper等查询条件包裹器对象最终输出的Sql语句的。
前面不能有WHERE,所以我在最外面又包了一层,将纯粹的多表关联查询语句与特殊组装语句区分开,这样不但可以在自定义Sql内部使用WHERE语句,也便于复制和创建新的Mapper。
但这里还要注意一个关键问题。
在Mapper里面自定义Sql注解对应的方法,其返回的Pojo对象,以及Mapper类指定的Pojo对象,他们必须完全一致。
即:extends BaseMapper 中的T需要与Page一致
如果我在public interface GameMapper extends BaseMapper里写了这样一个方法:Page page(Page page, @Param("ew") Wrapper queryWrapper);
即使GameQuery这个对应多表关联字段的Pojo继承自Game,也会出现如下错误:evaluating expression 'ew.customSqlSegment'. Cause: org.apache.ibatis.ognl.OgnlException: customSqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this entity
因此,多表关联分页查询的Mapper需要单独新建,与单表实例分开。
java 11官方入门(第8版)教材
79.84元
包邮
(需用券)
去购买 >
java 多表分页_MyBatisPlus分页多表关联查询相关推荐
- mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20
一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...
- 8.分页、连接、自关联查询
获取部分行 语法 select * from 表名 limit start,count 从start开始,获取count条数据 start索引从0开始 例1:查询前3行男生信息 select * fr ...
- mysql查找两表中不同的数据库表_各位大侠怎样查找两张表的里面的数据(这两张表在不同的数据库)...
Oracle: 一.同一个实例中的两个表 相应有两个用户a(表t1).b(表t2) 将用户a的t1查询权限授予b用户 grant select on t1 to b; 之后,b就可以查询t1表了 se ...
- java mongodb 多表关联查询,多条件查询,分页,排序
前言: 由于最近项目赶,版本迭代快,不知道大BOSS从哪里听别人说MongoDB用来做关系型数据库好,而且速度快,性能高:听到这话的我,立马就反驳了回去:"MongoDB不支持事物" ...
- java服务器端分页_使用数据表的服务器端分页
服务器每页返回15条记录,总记录超过2000条 . 我想显示前15条记录,然后每次单击"下一步"按钮,显示剩余的所有记录(每页15条记录) . 为此,我们做服务器端分页或客户端?? ...
- Mybatis-plus多表关联查询,多表分页查询
学习plus真的觉得写代码真的越来越舒服了.昨天开始接触吧,只要学会了多表关联查询.plus就能随意搭配使用了. 关于怎么搭建的就自行了去研究了哦.这里直接进入主题. 我用的是springboot+m ...
- Shardingsphere的分库分表+读写分离+分页条件查询
Shardingsphere的分库分表与读写分离 导入依赖 <dependencies><dependency><groupId>org.springframewo ...
- Spring Boot 学习总结之JPA【分页+自定义SQL+多表查询】
目录 目录 Spring Data JPA简介 与mybatis对比 入手使用 (一)引入依赖 (二)添加配置文件: (四)实体类 (五)Repository: (六)使用: 自定义简单查询 复杂查询 ...
- 百亿级数据分表后怎么分页查询?
当业务规模达到一定规模之后,像淘宝日订单量在5000万单以上,美团3000万单以上.数据库面对海量的数据压力,分库分表就是必须进行的操作了.而分库分表之后一些常规的查询可能都会产生问题,最常见的就是比 ...
最新文章
- 音频处理一:(音频基本信息)
- UIActionSheet
- rufus linux开机密码,使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
- 领域驱动设计 pdf_什么是领域驱动设计?
- python画方波_python实现周期方波信号频谱图
- 解读浮动闭合最佳方案:clearfix
- C语言,你真的弄懂了么?
- 蓝牙uuid是什么意思_小公主的吐槽非常好|米家蓝牙温湿度计2
- ft2232驱动安装方法_win7系统无法安装打印机驱动程序的解决方法
- MATLAB学习与使用:矩阵的运算
- Sophix热修复问题以及加固
- 南大Lamda实验室俞扬:我的牛年小结
- [计算机网络]十、TCP的拥塞控制和4个计时器、常用协议原理和命令
- 双代号网络图如何用计算机画,怎么画双代号网络图,双代号网络图的绘制规则和步骤...
- 阿里云-云开发平台入门篇——静态网站的全生命周期实战
- 【前端大屏可视化项目适配方案】
- CV文章摘要中文翻译集(目标检测,纹理分类)
- ubuntu 关闭系统自动更新
- HIVE的搭建配置及关联MySQL
- 文件服务器找不到ad,找不到本地 Exchange 服务器的 AD 对象或者对象无效