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,但因为同一个用户有多个角色,这样翻页就有问题。请各位给指点一下,如果是程序有问题也请指出来,谢谢