Mybatis使用配置文件实现多表查询

user表
role表
中间表
表的关系

对应的User类和Role类

public class User implements Serializable {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    
    private List<Role> roles;
    }
public class Role implements Serializable {
    private Integer roleId;
    private String roleName;
    private String roleDesc;

    private List<User> users;
    }

Dao

public interface IUserDao {
    /**
     * 查询所有用户
     * @return
     */
   public List<User> findAll();
}
public interface IRoleDao {
    List<User> findAll();
}

IUserDao.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="cn.qut.dao.IUserDao">
      <!-- type 属性:指定实体类的全限定类名,id 属性:给定一个唯一标识,是给查询 select 标签引用用的 -->
      <!-- id 标签:用于指定主键字段-->
      <!-- result 标签:用于指定非主键字段 -->
      <!-- column 属性:用于指定数据库列名-->
      <!-- property 属性:用于指定实体类属性名称-->
    <resultMap id="userMap" type="cn.qut.enities.User">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="address" column="address"></result>
        <result property="sex" column="sex"></result>
        <result property="birthday" column="birthday"></result>
        <collection property="roles" ofType="cn.qut.enities.Role">
            <id property="roleId" column="rid"></id>
            <result property="roleName" column="ROLE_NAME"></result>
            <result property="roleDesc" column="ROLE_DESC"></result>
        </collection>

    </resultMap>


    <!-- 配置查询所有操作 -->
    <select id="findAll" resultMap="userMap">
       SELECT u.*,r.ID as rid ,r.ROLE_NAME,r.ROLE_DESC from `user` u
       LEFT  OUTER JOIN user_role ur on u.id=ur.UID
        LEFT OUTER JOIN  role r on r.ID=ur.RID
    </select>


</mapper>

测试类

 /**
     *测试findAll()方法
     */
    @Test
    public void findAllTest(){
        List<User> userList = userDao.findAll();
        for (User user:userList
             ) {
            System.out.println(user.toString());
            System.out.println(user.getRoles());
        }
    }

测试执行结果

从Role查询User就不演示了,原理是一样的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值