Mybatis的关联查询

数据库中: 多个表之间关系靠外键, 外键设计

  • 一对一关联关系: 外键可以加在任何一的一方, 需要在外键添加一个唯一约束

  • 一对多关联关系: 外键可以加在任何多的一方

  • 多对多关联关系: 需要中间表, 维护两个外键, 这个外键一般添加联合主键

java实体类设计: 类之间之间关系靠关联属性,

类的设计中, 关联属性两种情况

  • 单个关联属性

  • 集合关联属性

需求: 根据用户id查询用户信息以及订单信息

sql有两种方式:

  1. 分多条sql语句查询

  2. 使用表关联查询

 select * from tb_user u join tb_order o
 on u.id = o.userid
 where u.id = 4;

使用表关联查询

编写UserMapper接口

编写sql映射文件 UserMapper.xml

进行属性映射

    <!--手动映射-->
    <resultMap id="userBaseMap" type="User">
         <!--User类映射-->
         <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="password" property="password"/>
        <result column="sex" property="sex"/>
        <result column="brithday" property="brithday"/>
        <result column="address" property="address"/>
    </resultMap>
​
    <resultMap id="userOrderMap" type="User" extends="userBaseMap">
        <!--关联属性的映射
           集合的关联属性  collection标签来映射
           collection属性:
              property: 关联属性名
              javaType: 关联属性的数据类型 不写
              ofType: 集合关联属性的元素的类型, 映射那个对象 必须
         -->
        <collection property="orders" ofType="Order">
            <!--字段与关联属性对象的属性的映射-->
            <id property="id" column="id"/>
            <result property="userId" column="userid"/>
            <result property="createtime" column="createtime"/>
            <result property="state" column="state"/>
        </collection>
​
    </resultMap>

​
​
  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值