SSM笔记:mybatis/mybatis-plus 一对多通过xml配置实现

7 篇文章 0 订阅
5 篇文章 0 订阅

首先 数据库结构如下

如上,一共五张表 用户表、角色表、菜单表、 用户角色表、菜单角色表;

这里只说其中的用户表用户角色表角色表 

一对多关系表现在一个用户可以具有多个角色,根据SSM框架分层,使用generator插件生成对应的实体和dao层接口,保证数据库字段名与实体字段名保持一致;

得到如下结构:

实体:不提供详细代码,因为字段和数据库字段一致,由于一对多,用户类需要增加一个字段:   

 private List<Role> roles;

还需要注意的是:

      mybatis-plus要求在User类上添加表名注解;

      关联xml中的resultMapper;

User类代码:

@TableName(value = "user", resultMap = "userMap")
public class User implements UserDetails {

//...省略其他字段

 @Getter
 @Setter
 private List<Role> roles;
}

对应dao层接口mapper(继承自mybatis-plus,基本接口不用再写):

public interface UserMapper extends BaseMapper<User> {
}

dao层接口对应xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.weipiru.server1.mapper.UserMapper">
    <resultMap id="userMap" type="org.weipiru.server1.beans.User">
        <id column="uid" property="uid"/>
       <!--猜测:column 会传入子查询-->
        <collection property="roles" ofType="org.weipiru.server1.beans.Role" column="uid" select="findRolesByUid"/>
    </resultMap>

  <select id="findRolesByUid" resultType="org.weipiru.server1.beans.Role">
        select t_relate.role_id,t_relate.user_id,role.*
        from user_role as t_relate
                 right join role on t_relate.role_id = role.uid
        where t_relate.user_id = #{uid}
    </select>
</mapper>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值