个人学习笔记---Mybatis框架学习(4)

mybatis中的多表查询:

  • 表之间的关系有几种:
    一对多
    多对一
    一对一
    多对多

    • 以用户表和账户表为例
      用户和订单就是一对多
      订单和用户就是多对一
      一个用户可以下多个订单
      多个订单属于同一个用户
      特例:
      如果拿出每一个订单,他都只能属于一个用户。
      所以Mybatis就把多对一看成了一对一。
  • 实现一对一操作查询

    为了体现对应关系,从表实体应该包含一个主表实体的引用对象,
    故向Account实体类中加入一个private User user;
    查询所有账户,同时获取账户的所属用户名称以及它的地址信息

<!--查询所有账户,同时获取账户的所属用户名称以及它的地址信息-->
<!-- 建立对应关系 --> 
<resultMap id="accountUserMap" type="account">
	<id property="id" column="aid"></id>
    <result property="uid" column="uid"></result>
    <result property="money" column="money"></result>
    <association property="user" column="uid" javaType="user">
    	<id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="sex" column="sex"></result>
        <result property="birthday" column="birthday"></result>
        <result property="sex" column="sex"></result>
        <result property="address" column="address"></result>
    </association>
</resultMap>
 
<select id="findAll" resultMap="accountUserMap">
	SELECT a.*,u.address,u.username FROM account a,USER u WHERE a.uid =u.id
</select>
  • 实现一对多操作查询
    为了体现对应关系,主表实体应该包含一个从表实体的List集合对象,故向Account实体类中加入一个private List<Account> accounts;
    查询所有用户,同时获取用户所有的账户信息
<!-- 定义User的resultMap-->
<resultMap id="userAccountMap" type="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>
    <!-- 配置user对象中accounts集合的映射 -->
    <collection property="accounts" ofType="account">
        <id column="aid" property="id"></id>
        <result column="uid" property="uid"></result>
        <result column="money" property="money"></result>
    </collection>
</resultMap>

<select id="findAll" resultMap="userAccountMap">
	select * from user u left outer join account a on u.id = a.uid
</select>
  • 实现多对多操作查询

    • 示例:用户和角色
      一个用户可以有多个角色
      一个角色可以赋予多个用户
    • 步骤:
      1、建立两张表:用户表,角色表
      让用户表和角色表具有多对多的关系。需要使用中间表,中间表中包含各自的主键,在中间表中是外键。
      2、建立两个实体类:用户实体类和角色实体类
      让用户和角色的实体类能体现出来多对多的关系
      各自包含对方一个集合引用
      3、建立两个配置文件
      用户的配置文件
      角色的配置文件
      4、实现配置:
      当我们查询用户时,可以同时得到用户所包含的角色信息
      当我们查询角色时,可以同时得到角色的所赋予的用户信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值