按照mybatis手册中所说的,association有两种实现方式,嵌套查询和嵌套结果映射。如手册中所述,select方式会带来N+1次查询的问题,考虑到效率问题的话建议使用嵌套结果映射。但是在结合使用rowbounds进行分页的时候嵌套结果映射会报Mapped Statements with nested result mapping cannot be safely constrained by rowbounds异常。经过测试发现是rowbounds和resultmap-association之间有冲突,鱼与熊掌不可兼得的话,我想最好还 是选择放弃rowbounds。毕竟可以在sql语句里面加入变量来实现分页。

解决方案:
新建一个RowBoundCapsule类,将原来的查询参数和limit、offset封装到一起,并采用如下的方式改写mapper文件:
<select id="selectByOwner" parameterType="int" resultMap="topicresultmap" resultSetType="FORWARD_ONLY">   select t.tid as tid, t.uid as tuid, t.content as content, t.commentcount as commentcount, t.pptime as pptime,   u.uid as uid, u.email as email, u.nickname as nickname, u.login as login, u.pass as pass, u.pic as pic   from topic as t LEFT JOIN user as u on t.uid = u.uid   where t.uid = #{o} limit #{offset},#{limit} </select>

#{o}代表原来的参数。这样就可以把分页的任务交给数据库来完成了。

=====================

或者不要rowbounds了,直接传offset和pageSize到dao中,然后在sql后加limit #{offset},#{limit}

 

mybatis association表关联与rowbounds共同使用时的异常及其解决方案相关推荐

  1. 14、mybatis多表关联查询 association定义关联对象封装规则及懒加载

    文章目录 1.使用association单步查询 1).EmployeeMapper 2).EmployeeMapper.xml 3).Test 2.使用association进行分步查询 4).De ...

  2. mybatis 多表关联查询_Java修行第041天--MyBatis框架(下)--多表查询

    1 解决列名和属性名不一致问题 如果查询时使用 resultType 属性, 表示采用 MyBatis 的Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库 ...

  3. Mybatis多表关联查询(一对多关联查询)

    1.Mybatis一级缓存与二级缓存 目的:提高查询效率,降低数据库查询压力,提升系统整体性能. 一级缓存:默认开启,Session级别,同一个会话内生效. 命中缓存的情况:statementid.S ...

  4. MyBatis多表关联查询

    本文将向大家介绍 MyBatis 中的多表关联查询 主要通过两个示例来说明在 MyBatis 中如何实现 一对多,多对一 和 多对多 查询 第一个示例:老师和学生关联 ​ 老师和学生是一对多的关系,一 ...

  5. mybatis多表关联映射

    数据准备: 在MySQL数据库中,创建一个名为mybatis的数据库,在此数据库中创建一个student表,course表以及sc表,同时预先插入几条数据.如图所示(下图只是表样例,具体数据记录自己编 ...

  6. MyBatis 多表关联相同字段的解决方案

    多表关联查询有相同字段的解决方案 问题描述 现场还原 解决方案 总结反思 问题描述 我们要对数据库中的两张表进行管理查询,但是不幸的是这两张表有相同的字段名,导致最后查询出来的结果里这两个字段的值是相 ...

  7. mybatis主从表关联查询,返回对象带有集合属性

    昨天有同事让我帮着看一个问题,mybatis主从表联合查询,返回的对象封装集合属性.我先将出现的问题记录一下,然后再讲处理方法也简单说明一下: VersionResult为接收返回数据对象,get\s ...

  8. stm32f103c8t6使用PB3和PB4做普通GPIO使用时发现异常

    在使用PB3和PB4做普通GPIO使用时,发现普通的GPIO初始化程序无法正常使用PB3和PB4,后经查阅资料,发现是因为PB3和PB4在默认情况下是做JTAG调试用的.如果需要将其当普通GPIO使用 ...

  9. Mybatis处理表关联(懒加载)

    1.关系型数据库? 数据库中的表对象之间是有关系的. 一对一,一对多,多对多. ORM映射.数据库表映射到实体对象. 实体与实体之间是有关系的. 一对多的关系. 比如商品分类表与商品表之间的关系,就是 ...

最新文章

  1. android自定义调节器控件 —— RegulatorView
  2. 2012年1月java_全国2012年1月自考Java语言程序设计(一)试题及答案.doc
  3. 利用python3.x实现小爬虫下载贴吧内图片
  4. Keras梯度累积优化器:用时间换取效果
  5. JavaScript实现判断位是不是偶数isEven算法(附完整源码)
  6. 什么是计算机网络中的主机?
  7. POJ3237 树的维护
  8. Eclipse Java EE 开发 Web 应用程序
  9. 简要解析红外摄像机技术与市场
  10. Atitit 项目管理(5)----------后勤管理与工具链支持管理
  11. java md5加密 32位 小写
  12. 定时清理elasticsearch索引和数据
  13. 我的青春谁做主——经典台词之人生哲理
  14. linux du命令
  15. 10g日志挖掘logmnr
  16. PaaS平台应用的原则
  17. GetKeyState函数详解
  18. arch Linux 无线网,archlinux 连接无线网络
  19. 手把手带你搭建个人博客系统(一)
  20. vue自定义指令 v-focus 实现

热门文章

  1. 一次Rootkit实施失败记(图解)
  2. 2019秋第三周学习总结
  3. scrum立会报告+燃尽图(第三周第七次)
  4. WIN10安装scrapy/channels等不成功的解决方式
  5. select resharper shortcuts scheme
  6. ExpressionFuncT,TResult和FuncT,TResult
  7. 快速获取Android应用包名和Activity名
  8. xx is not in the sudoers file 问题解决
  9. php ajax实现的二级(多级)联动菜单(2008-10-21,11:36:08)
  10. Event 系列: jquery event 源码