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 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)