MyBatis 多对多级联

在MyBatis中会拆分为两个一对多关系。
比如: 用户、角色 就是多对多关系,在做的时候就会拆分两个一对多,及一个用户多多个角色,一个角色对多个用户。
中间还需要一个关联表
entity:

  public class User2 {
    private Long id;
    private String userName;
    private String realName;
    private SexEnum sex;
    private String mobile;
    private String email;
    private String note;
    private List<Role2> roleList;
}

public class Role2 {
    private Long id;
    private String roleName;
    private String note;
    private List<User2> userList;
}

XML:

<mapper namespace="com.bob.analyst.dao.RoleMapper2">
      <resultMap type="com.bob.analyst.model.Role2" id="roleMapper">
        <id column="id" property="id"/>
        <result column="role_name" property="roleName"/>
        <result column="note" property="note"/>

        <!-- 一对多 -->
        <collection property="userList" column="id" fetchType="lazy"
         select="com.bob.analyst.dao.UserMapper2.findUserByRoleId"></collection>
      </resultMap>

      <select id="getRole" parameterType="long" resultMap="roleMapper">
        select id,role_name as roleName,note from tbl_role 
        where id=#{id}
      </select>

      <select id="findRoleByUserId" parameterType="long" resultMap="roleMapper">
        select r.id,r.role_name,r.note from tbl_role r,tbl_user_role ur
        where r.id=ur.role_id and r.user_id=#{userId}
      </select>
</mapper>
<mapper namespace="com.bob.analyst.dao.UserMapper2">
      <resultMap type="com.bob.analyst.model.User2" id="userMapper">
        <id column="id" property="id"/>
        <result column="user_name" property="userName"/>
        <result column="real_name" property="realName"/>
        <result column="sex" property="sex" typeHandler="com.bob.analyst.util.SexEnum"/>
        <result column="mobile" property="mobile"/>
        <result column="email" property="email"/>
        <result column="note" property="note"/>

        <!-- 一对多 -->
        <collection property="roleList" column="id" fetchType="lazy"
         select="com.bob.analyst.dao.RoleMapper2.findRoleByUserId"></collection>

      </resultMap>

      <cache type="com.xx.xx.xx.xxxCache">
        <property name="host" value="localhost"/>
      </cache>
      <cache-ref namespace="com.bob.analyst.dao.RoleMapper2"/>

      <select id="getUser" parameterType="long" resultMap="userMapper">
        select * from tbl_user
        where id=#{id}
      </select>

      <select id="findRoleByUserId" parameterType="long" resultMap="userMapper">
        select u.* from tbl_user u,tbl_user_role ur
        where u.id=ur.user_id and r.role_id=#{roleId}
      </select>

</mapper>

service:

Role2 role=roleMapper.getRole(1L);
role.getUserList();
User2 user=userMapper.getUser(1L);
user.getRoleList();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值