我是靠谱客的博主 呆萌苗条,最近开发中收集的这篇文章主要介绍MyBatis实现多表查询(一对一、一对多)什么是级联:方式一:xml配置文件方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是级联:

一对一: 一个对象对应唯一的对象

一对多: 一个对象对应多个对象

多对多: 多个对象对应多个对象

方式一:xml配置文件方式

创建老师表和课程表:如下图:

Teacher

Course

 

首先分析这两个表在做多表查询时对应关系。

课程对于老师而言是一对一的关系。

一对一级联步骤:

1.创建关联POJO,一对一级联时,以对象方式存 储关联关系;

2.创建映射器,创建对应的映射器;

3.利用 <association>元素完 成一对一级联;

4.编写测试类验证级联关系;

建立实体类如下图:

 

配置课程层的xml文件使用resultMap标签

注意:

一对一的关系映射使用的是association

在多表联查中没有显示映射的字段不会被赋值

 

测试 验证:结果如下

 

老师对于课程而言是一对多的关系。建立实体类如下图:

一对多级联步骤:

1.创建”一“方POJO 以集合的形式级联“多”方对象

2.创建“多”方对象 创建“多”方的 POJO 对象

3.创建映射器 创建对应的映射器

4.实现一对多级联 利用 collection 元素实现一 对多的级联

5.测试 编写测试文件测试一对多级联

建立实体类,如下图:

 

 再配置老师层的xml文件使用resultMap标签

注意:

一对多的关系映射使用的是collection

使用ofType指定集合中的元素类型 

 

 测试结果如下:

 

方式二: 使用映射器注解多表查询

 一对一映射:

语法:

@One( Select = 一对一查询方法, fetchType = FetchType.EAGER ) 

注:FetchType.lazy 是延时加载,FetchType.EAGER 是即时加载。 

 

 一对一使用one属性的@One注解

property代表实体类中声明的属性,column代表传入后面select语句中的参数

select代表查询本条数据时所用的方法的全限定名

 

 一对多映射:

语法:

 @Many( Select = 一对多查询方法, fetchType = FetchType.EAGER )

注:FetchType.lazy 是延时加载,FetchType.EAGER 是即时加载。

 一对多使用many属性的@Many注解

 

 级联的缺陷:

1.性能缺陷:级联操作会降低性能, 增加程序的执行时间;

2.复杂度缺陷:关联较多造成复杂度的 增加,不利于他人的理 解和维护;

使用建议:

1.根据实际情况增加级联关系。

2.多层关联式,建议超过三层关联时尽量少用级联。

最后

以上就是呆萌苗条为你收集整理的MyBatis实现多表查询(一对一、一对多)什么是级联:方式一:xml配置文件方式的全部内容,希望文章能够帮你解决MyBatis实现多表查询(一对一、一对多)什么是级联:方式一:xml配置文件方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部