前提提要
- 本系列Mybatis笔记基于mybatis3.5.2 , https://github/mybatis/mybatis-3/releases/tag/mybatis-3.5.2中有详细的文档说明,可以进行下载阅读,本文只是对Mybatis的一些常用操作进行汇总总结。
- 推荐视频资料:https://www.bilibili/video/BV1VP4y1c7j7?p=1
- 所需前提:对maven有些了解。(maven v3.6.1)如果对maven不是很熟悉推荐博主文章。Maven常用知识梳理总结
- MyBatis系列文章索引页✋
- IDE: IntelliJ IDEA 2021.3
- 构建工具: apache-maven-3.6.3
- MySQL版本:MySQL 5.7.35
- MyBatis版本:MyBatis 3.5.7
文章目录
- 前提提要
- 一.全局配置文件
- 1. properties: 通过配置文件动态绑定值
- 2. setting :对全局设置相关属性值
- 3. typeAliases( alias,package) 设置类型的别名
- 4. environments:设置数据库环境
- 4.1 transactionManager:设置事务管理方式
- 5. mappers:引入映射文件
- 6.总结
一.全局配置文件
全局配置文件,见名知意就是对当前MyBatis的一些全局属性进行设置。也就是对各种数据操作进行统一规定。
全局配置文件包含了全局设置(setting
)和properties
两个大的部分,通过这两个大的部分动态的影响MyBatis的行为。下面我从几个方面去介绍:
大致来看看最简单的全局配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis//DTD Config 3.0//EN"
"http://mybatis/dtd/mybatis-3-config.dtd">
<configuration>
...
<typeAliases>
<environments default="development">
<mappers>
...
</configuration>
但是,上面各个标签的顺序,我绝对不是随便给的。MyBatis对各个标签的顺序有规定。
如果标签的顺序不正确,会出现错误,如下图:
核心配置文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱):
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers
那我就按照上述的顺序来将一些常见的进行介绍:
1. properties: 通过配置文件动态绑定值
<properties>
表名的是可外部化,可替换的一些属性。在典型的JAVA属性中配置他们文件的实例。比如jdbc.properties
文件的导入。
<!--引入配置文件-->
<properties resource="jdbc.properties"/>
[jdbc.properties
]
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/mybatis
jdbc.username=root
jdbc.password=admin
然后,我们就可以在数据源中动态的设置这些值。
<environment id="test">
<!--事务管理器通过jdbc来进行管理-->
<transactionManager type="JDBC"/>
<!--数据源,从数据连接池中进行取用 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
2. setting :对全局设置相关属性值
<setting>
是在mybatis运行过程中修改运行行为一个非常重要的方式。其中规定了很多属性的值,如是否开启全局缓存,懒加载是否开启等等.
我只截取其中的一部分,其他详细的请查阅相关文档。
3. typeAliases( alias,package) 设置类型的别名
设置别名:为一些比较长的类名起一个比较短的代称。
里面有的属性有
type
: 需要设置别名的全类型名。
alias
: 设置此类型的别名,并且不进行区分大小写 ,如果这项不进行设定的话,框架给一个默认的别名——以类名作为别名。
<typeAliases>
<typeAlias type="com.fangshaolei.mybatis.Account" alias="account" />
<typeAlias type="com.fangshaolei.mybatis.User" alias="uu" />
</typeAliases>
但是,对于开发中,这种操作一般比较繁琐。一般使用扫描包的方式来做。通过以包为单位,设置和修改包下的所有类都拥有默认的别名(即是类名),并且所有的别名都不区分大小写。
<package name="com.fangshaolei.mybatis.bean"/>
系统中默认配置的别名:
4. environments:设置数据库环境
<environments>
用于设置多个连接数据库的环境。比如说一些其他数据库,Oracle
,MySQL
等等,在需要的使用达到动态切换的目的。
- 而对于
<environments>
要使用哪个环境,是通过default
属性来设置对应environment
的id来实现的。
一个environments
有很多的environment
,但是只能有一个作为项目的数据库环境。
<environments default="development">
<!--开发环境
environment: 用来配置某个具体的环境
属性:
id: 表示连接数据库环境的唯一标识,不能重复
属性:
type: = "JDBC | MANAGED"
JDBC: 表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式, 事务的提交和回滚需要手动来进行处理
MANAGED: 被管理,例如spring
-->
<environment id="development">
<!--事务管理器通过jdbc来进行管理-->
<transactionManager type="JDBC"/>
<!--数据源,从数据连接池中进行取用
datasource: 配置数据源
属性:
type: 设置数据源类型
type = "POOLED | UNPOOLED | JNDI"
POOLED: 表示使用数据库连接池缓存数据库连接
UNPOOLED: 表示不使用数据库中的连接词
JNDI: 表示使用上下文中的数据源连接池
-->
<dataSource type="POOLED">
<!--设施连接数据库的驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--设置连接地址-->
<property name="url" value="jdbc:mysql://localhost:3307/mybatis"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="admin"/>
</dataSource>
</environment>
<!--测试-->
<environment id="test">
</environment>
</environments>
4.1 transactionManager:设置事务管理方式
属性:type="JDBC/MANAGED"
- JDBC: 在当前环境中,执行sql时,使用的是jdbc原生的事务管理方式,需要手动的提交和回滚事务
- MANAGED:被管理,例如Spring
5. mappers:引入映射文件
mappers
引入映射文件有三种方式(严格来说是四种)。而这里博主只介绍一种常用的方式:🍒以包围单位引入配置文件
但是,以包为单位引入配置文件,有两个要求:
mapper
接口所在的包要和映射文件所在的包要一致。mapper
接口要和映射文件的名称一致。
满足了上述两个要求之后,就可以在<mappers>
标签内利用<package>
标签实现批量引入映射文件。
<mappers>
<package name="com.fangshaolei.mybatis.mapper"/>
</mappers>
🆘Notice:还有一个需要注意的点,在resources
中,如果一次性创建多个层级目录,不能使用如图所示,使用.
来创建。而要使用com/fangshaolei/mybatis/mapper
才能创建出和类包一样的目录结构。
否则会报:BindingException: Type interface com.atguigu.mybatis.mapper.UserMapper is not known to the MapperRegistry.
6.总结
本节内容,没有什么特殊的tips
,对于还有一些其他的配置信息,可以在MyBatis官方文档中有详细说明,博主不在班门弄斧的解释。
一份完整的mybatis-config.xml
配置示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis//DTD Config 3.0//EN"
"http://mybatis/dtd/mybatis-3-config.dtd">
<configuration>
<!--引入配置文件-->
<properties resource="jdbc.properties"/>
<!--
mybatis配置文件中一定要按照顺序来进行配置
properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
databaseIdProvider?,mappers?)".
-->
<typeAliases>
<!--进行书写别名
类型别名他不进行区分大小写 ,如果alias不进行设置就会拥有一个默认的别名,默认的就是当前的类名
typealias: 设置某个类型的别名
属性:
type: 设置需要设置别名的类型
alias: 设置某个类型的别名,若不设置该属性,就会拥有一个默认的别名,默认的别名就是当前的类名。
-->
<!--<typeAlias type="com.fangshaolei.mybatis.pojo.User" alias="user"/>-->
<package name="com.fangshaolei.mybatis.pojo"/> <!--通过以包为单位来进行设置-->
</typeAliases>
<!--
environments: 配置多个连接数据的环境
属性:
default: 设置默认使用的环境id
-->
<environments default="development">
<!--开发环境
environment: 用来配置某个具体的环境
属性:
id: 表示连接数据库环境的唯一标识,不能重复
属性:
type: = "JDBC | MANAGED"
JDBC: 表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式, 事务的提交和回滚需要手动来进行处理
MANAGED: 被管理,例如spring
-->
<environment id="development">
<!--事务管理器通过jdbc来进行管理-->
<transactionManager type="JDBC"/>
<!--数据源,从数据连接池中进行取用
datasource: 配置数据源
属性:
type: 设置数据源类型
type = "POOLED | UNPOOLED | JNDI"
POOLED: 表示使用数据库连接池缓存数据库连接
UNPOOLED: 表示不使用数据库中的连接词
JNDI: 表示使用上下文中的数据源连接池
-->
<dataSource type="POOLED">
<!--设施连接数据库的驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--设置连接地址-->
<property name="url" value="jdbc:mysql://localhost:3307/mybatis"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="admin"/>
</dataSource>
</environment>
<!--测试-->
<environment id="test">
<!--事务管理器通过jdbc来进行管理-->
<transactionManager type="JDBC"/>
<!--数据源,从数据连接池中进行取用 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--映入配置文件-->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/>-->
<!--
以包围单位引入映射文件
要求:
1.mapper接口所在的包要和映射文件所在的包一致
2. mapper接口要和映射文件的名字是一致的
-->
<package name="com.fangshaolei.mybatis.mapper"/>
</mappers>
</configuration>
🌈🌈🌈文章还有许多不足的地方,欢迎指正。🎄
更多推荐
MyBatis中核心配置文件mybatis-config.xml主要参数详解
发布评论