type
status
date
slug
summary
tags
category
icon
password
URL
文章来源说
日志
- 导入pom
- 添加logback配置文件
在mybatis的项目中,我们发现了有一个mybatis-config.xml的配置文件,这个配置文件是mybatis的全局配置文件,用来进行相关的全局配置,在任何操作下都生效的配置。下面我们要针对其中的属性做详细的解释,方便大家在后续使用的时候更加熟练。
官方说明:
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
- configuration(配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
mybatis-config.xml
Mybatis SQL映射文件
MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。
SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):
- cache – 该命名空间的缓存配置。
- cache-ref – 引用其它命名空间的缓存配置。
- resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。
parameterMap– 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。
- sql – 可被其它语句引用的可重用语句块。
- insert – 映射插入语句。
- update – 映射更新语句。
- delete – 映射删除语句。
- select – 映射查询语句。
在每个顶级元素标签中可以添加很多个属性,下面我们开始详细了解下具体的配置。
参数取值方式
- 在xml文件中编写sql语句的时候有两种取值的方式,分别是#{}和${},下面来看一下他们之间的区别:
- select参数传递
- 处理结果
EmpDao.xml
UserDao.java
- 自定义结果集
高级结果映射
1.联合查询
emp.java
EmpMapper.xml
QueryEmpDTO
Test
2.嵌套结果
- 多对1
EmpMapper.xml
- 1对多
Emp.java
Dept.java
EmpMapper.java:
DeptMapper.java:
嵌套查询
在上述逻辑的查询中,是由我们自己来完成sql语句的关联查询的,那么,我们能让mybatis帮我们实现自动的关联查询吗?
多对1
EmpMapper.xml:
DeptMapper.xml
1对多
DeptMapper.xml
EmpMapper.xml
Emp.java
Dept.java:
Emapper.java
DeptMapper.java
延迟查询
当我们在进行表关联的时候,有可能在查询结果的时候不需要关联对象的属性值,那么此时可以通过延迟加载来实现功能。在全局配置文件中添加如下属性
mybatis-config.xml
如果设置了全局加载,但是希望在某一个sql语句查询的时候不使用延时策略,可以添加fetchType下属性:
总结

三种关联guan关系都有两种关联查询的方式,嵌套查询,嵌套结果
*Mybatis的yanc延迟加载配置
在全局配置文件中加入下面代码
在映射文件中,元素和元素中都已默认配置了延迟加载属性,即默认属性fetchType=”lazy”(属性fetchType=”eager”表示立即加载),所以在配置文件中开启延迟加载后,无需在映射文件中再做配置
1.一对一
使用元素进行一对一关联映射非常简单,只需要参考如下两种示例配置即可

2.一对多
元素中,包含了一个子元素,MyBatis就是通过该元素来处理一对多关联关系的
子元素的属性大部分与元素相同,但其还包含一个特殊属性–ofType
ofType属性与javaType属性对应,它用于指定实体对象中集合类属性所包含的元素类型。
元素的使用也非常简单,同样可以参考如下两种示例进行配置,具体代码如下:

3.多对多
多对多的关联关系查询,同样可以使用前面介绍的<collection >元素进行处理(其用法和一对多关联关系查询语句用法基本相同)
- 作者:卷神
- 链接:https://blog.952712.xyz/article/856902ab-e3db-436e-a70a-aeebd4b73522
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。




