path1234 2011-06-20 17:14
浏览 257
已采纳

mybatis分页问题

 

spring+mybatis+mysql

t_user和t_role通过中间表t_user_role关联,多对多关系

public class User{

private String userId;

private String userCode;

private String userName;

private String password;

List<role> roles = new ArrayList<role>();

 

..........

}

 

配置文件:

<mapper namespace="com.mapper.UserMapper">

<resultMap type="User" id="userMap">  

        <id column="user_id" property="userId"/>

        <result column="user_name" property="userName"/>

<result column="password" property="password"/>

<result column="create_date" property="createDate"/>

        <collection property="roles" javaType="ArrayList" ofType="Role">

            <result column="role_id" property="roleId" javaType="string"/>

            <result column="role_name" property="roleName" javaType="string"/>           

        </collection>

    </resultMap>

<select id="queryUser" parameterType="User" resultMap="userMap">

SELECT u.user_id,u.user_name,u.password,r.role_id,r.role_name

FROM t_user u LEFT OUTER JOIN t_address a ON u.user_id=a.address_id

LEFT OUTER JOIN t_user_role ur ON ur.user_id=u.user_ID

LEFT OUTER JOIN t_role r ON r.role_id=ur.role_id

    </select>

</mapper>

这是按MYBATIS官网文档做的,这样可以实现多对多的功能,但在做分页时出了问题。

如果一个用户有3个角色,这样在SQL查询结果中同一个用户会有三条记录

 

如果要在用户列表页面做分页时就不知道怎么处理了。

 

 

数据库用的是:MYSQL,本来的想法是在 SELECT后面加LIMIT,但因为同一个用户有多个角色,这样翻页就有问题。请各位给指点一下,如果是程序有问题也请指出来,谢谢


  • 写回答

3条回答 默认 最新

  • iteye_2089 2011-06-21 09:53
    关注

    呵呵,使用自动关联查效率是低了一些,但是不影响大碍,因为毕竟实现了分页,每次查询出来的数量是固定的,所以这就是N+1的问题,只要控制住N,性能上就没多大问题了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题