Mybatis-----复杂映射&配置文件深入(二)

Mybatis多表查询

4.1 数据库表关系介绍

关系型数据库表关系分为

 

* 一对一

* 一对多

* 多对多

 

 

一对一:

1.Order实体类:

 

2.OrderMapper接口

3.OrderMapper.xml映射

<!--

assocation:在进行一对一关联查询配置时,使用assocation标签进行关联

property="user":要封装实体的属性名

javaType="com.lagou.domain.User":要封装实体的属性类型

-->

<association property="user" javaType="com.lagou.domain.User">

<id property="id" column="uid"/>

<result property="username" column="username"/>

<result property="birthday" column="birthday"/>

<result property="sex" column="sex"/>

<result property="address" column="address"/>

</association>

 

</resultMap>

<!--一对一关联查询,查询所有订单,与此同时还要查询出每个订单所属的用户信息-->

<select id="findAllWithUser"r esultMap="orderMap">

SELECT * FROM orders o LEFT JOIN USER u ON o.`uid`=u.`id`;

</select>

 

一对多:

 

1.User实体

2.UserMapper接口

3.UserMapper.xml映射

 

<!--一对多关联查询:查询所有用户,同时还要查询每个用户所关联的订单信息-->

<resultMap id="userMap" type="com.lagou.domain.User">

<id property="id" column="id"></id>

<result property="username" column="username"/>

<result property="birthday" column="birthday"/>

<result property="sex" column="sex"/>

<result property="address" column="address"/>

<!--

collection:一对多使用collection标签进行关联

-->

<collection property="ordersList" ofType="com.lagou.domain.Orders">

<id property="id" column="oid"></id>

<result property="orderTime" column="ordertime"/>

<result property="total" column="total"/>

<result property="uid" column="uid"/>

</collection>

</resultMap>

 

<select id="findAllWithOrders" resultMap="userMap">

SELECT u.*,o.id oid,o.ordertime,o.total,o.uid FROM orders o RIGHT JOIN USER u ON o.`uid`=u.`id`;

</select>

 

多对多:

1.User和Role 实体

2.UserMapper接口

3 .UserMapper.xml映射

<resultMap id="userRoleMap" type="com.lagou.domain.User">

<id property="id" column="id"></id>

<result property="username" column="username"/>

<result property="birthday" column="birthday"/>

<result property="sex" column="sex"/>

<result property="address" column="address"/>

<!--

collection:一对多使用collection标签进行关联

-->

<collection property="roleList" ofType="com.lagou.domain.Role">

<id property="id" column="rid"></id>

<result property="rolename" column="rolename"/>

<result property="roleDesc" column="roleDesc"/>

</collection>

</resultMap>

<select id="findAllWithRole" resultMap="userRoleMap">

SELECT u.*,r.id rid,r.role name,r.roleDesc FROM USER u--用户表

LEFT JOIN sys_user_roleur--左外连接中间表

ON u.`id`=ur.`userid` LEFT JOIN sys_roler--左外连接中间表

ON ur.`roleid`=r.`id`;

</select>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forrest Gump plus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值