按照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}代表原来的参数。这样就可以把分页的任务交给数据库来完成了。
分享到:
相关推荐
eclipse中Mybatis与mapper.xml映射文件的关联,直接点击类上面的方法,就可以跳转相应的方法的位置
SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)
mybatis 关联查询 一对一 一对多 ResultMap association collection 完整代码
主要介绍了Spring boot2基于Mybatis实现多表关联查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
文档中主要说明:(1)多表联合查询步骤,快捷便利;(2)数据批量插入,以及相关的案例,节省运行资源。
SpringBoot 整合Mybatis 创建临时表
Springboot中mybatis表关联映射关系(一对一)
Mybatis连表查询之association与collection
Mybatis关联映射 Mybatis关联映射 Mybatis关联映射 Mybatis关联映射 Mybatis关联映射
针对多表之间的操作,MyBatis提供了关联映射,通过关联映射就可以很好的处理对象与对象之间的关联关系。本章中,将对MyBatis的关联关系映射进行详细的讲解。 9.1 关联关系概述 在关系型数据库中,多表之间存在着三种...
自关联查询一对多的例子,也就是充当一方,以新闻栏目为例子
MyBatis关联映射代码
了解数据表之间以及对象之间的三种关联关系 2.熟悉关联关系中的嵌套查询和 嵌套结果 3.掌握一对一,一对多,和多对多关联映射作用
mybatis 报空值异常及其解决办法
使用MyBatis实现多对多关联映射查询的web,在eclipse上写的,使用的Mysql进行数据连接,内含数据库脚本,直接导入数据库即可建数据库和建表,不用再编写,非常方便,适合初学者了解和学习
采用springmvc+mybatis,搭建部分大致跟网上其他资料差不多,唯一不同的加入了统一错误处理,为了方便开发人员开发,所有错误码用一张表存在数据库中,然后由应用将整表缓存,缓存采用的spring自带的cache,开发中...
mybatis多表查询.zip
mybatis简单使用mybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单...
Springboot mybatis druid mybatis-gene druid监控的demo