前提提要

  • 本系列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:设置数据库环境

  1. <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主要参数详解