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条)

报告相同问题?

悬赏问题

  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题