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分页多表关联查询相关推荐

  1. mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20

    一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...

  2. 8.分页、连接、自关联查询

    获取部分行 语法 select * from 表名 limit start,count 从start开始,获取count条数据 start索引从0开始 例1:查询前3行男生信息 select * fr ...

  3. mysql查找两表中不同的数据库表_各位大侠怎样查找两张表的里面的数据(这两张表在不同的数据库)...

    Oracle: 一.同一个实例中的两个表 相应有两个用户a(表t1).b(表t2) 将用户a的t1查询权限授予b用户 grant select on t1 to b; 之后,b就可以查询t1表了 se ...

  4. java mongodb 多表关联查询,多条件查询,分页,排序

    前言: 由于最近项目赶,版本迭代快,不知道大BOSS从哪里听别人说MongoDB用来做关系型数据库好,而且速度快,性能高:听到这话的我,立马就反驳了回去:"MongoDB不支持事物" ...

  5. java服务器端分页_使用数据表的服务器端分页

    服务器每页返回15条记录,总记录超过2000条 . 我想显示前15条记录,然后每次单击"下一步"按钮,显示剩余的所有记录(每页15条记录) . 为此,我们做服务器端分页或客户端?? ...

  6. Mybatis-plus多表关联查询,多表分页查询

    学习plus真的觉得写代码真的越来越舒服了.昨天开始接触吧,只要学会了多表关联查询.plus就能随意搭配使用了. 关于怎么搭建的就自行了去研究了哦.这里直接进入主题. 我用的是springboot+m ...

  7. Shardingsphere的分库分表+读写分离+分页条件查询

    Shardingsphere的分库分表与读写分离 导入依赖 <dependencies><dependency><groupId>org.springframewo ...

  8. Spring Boot 学习总结之JPA【分页+自定义SQL+多表查询】

    目录 目录 Spring Data JPA简介 与mybatis对比 入手使用 (一)引入依赖 (二)添加配置文件: (四)实体类 (五)Repository: (六)使用: 自定义简单查询 复杂查询 ...

  9. 百亿级数据分表后怎么分页查询?

    当业务规模达到一定规模之后,像淘宝日订单量在5000万单以上,美团3000万单以上.数据库面对海量的数据压力,分库分表就是必须进行的操作了.而分库分表之后一些常规的查询可能都会产生问题,最常见的就是比 ...

最新文章

  1. 音频处理一:(音频基本信息)
  2. UIActionSheet
  3. rufus linux开机密码,使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
  4. 领域驱动设计 pdf_什么是领域驱动设计?
  5. python画方波_python实现周期方波信号频谱图
  6. 解读浮动闭合最佳方案:clearfix
  7. C语言,你真的弄懂了么?
  8. 蓝牙uuid是什么意思_小公主的吐槽非常好|米家蓝牙温湿度计2
  9. ft2232驱动安装方法_win7系统无法安装打印机驱动程序的解决方法
  10. MATLAB学习与使用:矩阵的运算
  11. Sophix热修复问题以及加固
  12. 南大Lamda实验室俞扬:我的牛年小结
  13. [计算机网络]十、TCP的拥塞控制和4个计时器、常用协议原理和命令
  14. 双代号网络图如何用计算机画,怎么画双代号网络图,双代号网络图的绘制规则和步骤...
  15. 阿里云-云开发平台入门篇——静态网站的全生命周期实战
  16. 【前端大屏可视化项目适配方案】
  17. CV文章摘要中文翻译集(目标检测,纹理分类)
  18. ubuntu 关闭系统自动更新
  19. HIVE的搭建配置及关联MySQL
  20. 文件服务器找不到ad,找不到本地 Exchange 服务器的 AD 对象或者对象无效

热门文章

  1. 1字节等于8比特的由来
  2. Java新手靠谱学习平台和刷题平台推荐
  3. oracle如何禁用主键约束,【oracle】约束之主键约束
  4. MySQL插入中文字符
  5. 树莓派利用DHT11上传数据到电脑MySQL上
  6. 离线 json xml 美化工具(主要针对macos和linux等系统),可离线使用
  7. 平安壹钱包2020笔试
  8. java 代码覆盖率_java单元测试覆盖率统计
  9. JavaScript 基础之 JavaScript 秘密花园
  10. 2016年天猫手机双11玩法曝光