Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理

$
0
0
Mybatis一对一,一对多,多对一,多对多的处理。
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类:


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.3.2 一对一查询映射的pojo

创建pojo包括 订单信息和用户信息,resultType才可以完成映射。

创建OrderCustom作为自定义pojo,继承sql查询列多的po类。


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.3.3 mapper.xml

定义mapper.xml文件,


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.3.4 mapper.java
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.4 使用resultMap实现一对一
1.4.1 resultMap映射思路

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

在Orders类中创建一个User属性,将关联查询的信息映射到User属性中。


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.4.2 mapper.xml
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.4.3 resultMap定义
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
1.4.4 mapper.java
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
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类中创建集合属性:


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
2.4 mapper.xml
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
2.5 resultMap定义
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
2.6 mapper.java
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
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 orderlist

在Orders中创建映射的属性:集合List orderdetails

在Orderdetail中创建商品属性:pojo Items items


Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
3.4 mapper.xml
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
3.5 resultMap
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理
3.6 mapper.java
Mybatis一对一,一对多,多对一,多对多的处理 数据库 数据库学习 MyBatis 多对多处理

Viewing all articles
Browse latest Browse all 6262

Trending Articles