Mybatis 一对一,一对多,多对一,多对多 的处理

  • Post author:
  • Post category:其他


1

一对一查询

1.1

需求

查询订单信息关联查询用户信息(orders–>user

:一个订单只能由一个用户创建  一对一

1.2

sql

语句


查询语句:

先确定主查询表:订单信息表

再确定关联查询表:用户信息


通过

orders

关联查询用户使用


user_id


一个外键,只能关联查询出一条用户记录就可以使用内连接

SELECT
  orders.*,
  user.username,
  user.sex
FROM
  orders,
  USER
WHERE orders.user_id = user.id

1.3


使用

resultType

实现


1.3.1


创建

po





基础的单表的

po

类:

1.3.2


一对一查询映射的

pojo


创建

pojo

包括 订单信息和用户信息,


resultType


才可以完成映射。


创建

OrderCustom

作为自定义


pojo


,继承


sql


查询列多的


po


类。

1.3.3

mapper.xml


定义

mapper.xml

文件,

1.3.4

mapper.java

1.4


使用

resultMap

实现一对一


1.4.1

resultMap

映射思路


resultMap

提供一对一关联查询的映射和一对多关联查询映射,一对一映射思路:将关联查询的信息映射到


pojo


中,如下:




Orders

类中创建一个


User


属性,将关联查询的信息映射到


User


属性中。

1.4.2

mapper.xml

1.4.3

resultMap

定义


1.4.4

mapper.java

1.5

小结

resultType

:要自定义


pojo


保证


sql


查询列和


pojo


的属性对应,这种方法相对较简单,所以应用广泛。

resultMap

:使用


association


完成一对一映射需要配置一个


resultMap


,过程有点复杂,如果要实现延迟加载就只能用


resultMap


实现 ,如果为了方便对关联信息进行解析,也可以用


association


将关联信息映射到


pojo


中方便解析。


2

一对多查询

2.1

需求

查询所有订单信息及订单下的订单明细信息。

2.2

sql

语句


主查询表:订单表

关联查询表:订单明细

SELECT
  orders.*,
  user.username,
  user.sex ,
  orderdetail.id orderdetail_id,
  orderdetail.items_num,
  orderdetail.items_id
FROM
  orders,
  USER,
  orderdetail
WHERE orders.user_id = user.id  AND orders.id = orderdetail.orders_id

2.3

resultMap

进行一对多映射思路


resultMap

提供


collection


完成关联信息映射到集合对象中。




orders

类中创建集合属性:

2.4

mapper.xml

2.5

resultMap

定义


2.6

mapper.java

3


一对多查询

(

复杂


)


3.1

需求

查询所有用户信息,关联查询订单及订单明细信息及商品信息,订单明细信息中关联查询商品信息

3.2

sql

主查询表:用户信息

关联查询:订单、订单明细,商品信息

SELECT
  orders.*,
  user.username,
  user.sex ,
  orderdetail.id orderdetail_id,
  orderdetail.items_num,
  orderdetail.items_id,
  items.name items_name,
  items.detail items_detail
FROM
  orders,
  USER,
  orderdetail,
  items
WHERE orders.user_id = user.id  AND orders.id = orderdetail.orders_id AND items.id = orderdetail.items_id

3.3

pojo

定义





user.java

中创建映射的属性:集合


List<Orders>

orderlist




Orders

中创建映射的属性:集合

List<Orderdetail> orderdetails

在Orderdetail

中创建商品属性:

pojo   Items items



3.4

mapper.xml

3.5

resultMap

3.6

mapper.java



版权声明:本文为zmjkey原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。