MyBatis 的配置文件
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的
设置和属性信息
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 配置文件的根元素 -->
<configuration>
<!-- 属性:定义配置外在化 -->
<properties></properties>
<!-- 设置:定义mybatis的一些全局性设置 -->
<settings>
<!-- 具体的参数名和参数值 -->
<setting name="" value=""/>
</settings>
<!-- 类型名称:为一些类定义别名 -->
<typeAliases></typeAliases>
<!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系 -->
<typeHandlers></typeHandlers>
<!-- 对象工厂 -->
<objectFactory type=""></objectFactory>
<!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则 -->
<plugins>
<plugin interceptor=""></plugin>
</plugins>
<!-- 环境:配置mybatis的环境 -->
<environments default="">
<!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
<environment id="">
<!-- 事务管理器 -->
<transactionManager type=""></transactionManager>
<!-- 数据源 -->
<dataSource type=""></dataSource>
</environment>
</environments>
<!-- 数据库厂商标识 -->
<databaseIdProvider type=""></databaseIdProvider>
<!-- 映射器:指定映射文件或者映射类 -->
<mappers></mappers>
</configuration>
properties(属性)
这些属性都是可外部配置且可动态替换的,既可以在典型的Java属性文件中配置,亦可通过properties元素的子元素来传递。
可以在CLASSPATH 中增加一个db.properties
的Java属性文件。
driver=com.mysql.jdbc.Driver
# mysql8.0+版本需要增加 &serverTimezone=Asia/Shanghai
url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
Password=root
在配置文件中配置<properie…/>属性:(两种)
<properties resource="db.properties"/>
其中的属性就可以在整个配置文件中使用来替换需要动态配置的属性值。
<dataSource type="POOLED">
<property name="driver" value="${driver} "/>
<property name="url" value="${url}"/>
<property name="username" value="${username} "/
<property name="password" value="${password} "/>
</dataSource>
driver、url、username 和password属性将会由db.properties
文件中对应的值来替换,这样就为配置提供了诸多灵活选择
设置(settings)
setting是指定MyBatis的一些全局配置属性
,这是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为,所以我们需要清楚的知道这些属性的作用及默认值。
<settings>
<!--开启打印日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 开启驼峰命名自动映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
setting全局配置参考官网:
https://mybatis.org/mybatis-3/zh/configuration.html#settings
类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写
第一种:当这样配置时,Blog 可以用在任何使用 domain.blog.Blog 的地方
<typeAliases>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
</typeAliases>
第二种:当设置包名配置时,MyBatis 会在包名下面搜索需要的 Java Bean的类名就是别名
,当然在有注解@Alias("author")
,则别名为其注解值为准。
<typeAliases>
<package name="com.fanlan.pojo"/>
</typeAliases>
了解Java 类型内建的类型别名:
https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases
环境配置(environments)
1.MyBatis 可以配置成适应多种环境
2.不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
3.每个数据库对应一个 SqlSessionFactory 实例
transactionManager(事务管理器)
默认是jdbc
MyBatis 中有两种类型的事务管理器:
JDBC
– 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
MANAGED
– 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
数据源(dataSource)
默认是POOLED使用连接池
三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):
UNPOOLED
:不使用连接池(适用可用性要求不高的简单应用程序)
POOLED
:使用连接池(快速响应请求)
JNDI
:(为了能在如 EJB 或应用服务器这类容器中使用)
映射器(mappers)
四种类型我比较喜欢用第一种
<!--使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="com/fanlan/Dao/BlogMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>