MyBatis 配置文件详解

根元素<configuration>,子元素:java

  • <properties>
  • <setttings>
  • <typeAliases>
  • <typeHandlers>
  • <objectFactory>
  • <plugins>
  • <environments>
  • <databaseIdProvider>
  • <mappers>

这些子元素的配置是有顺序的,只能按照上面的顺序配置。mysql

可缺省部分子元素。spring

 

 


 

 

<properties>

用于将内部的配置外在化,在<properties>中引入外部配置便可。sql

 

好比数据库的链接信息,咱们能够直接写在全局配置文件中:数据库

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT"/>
                <property name="username" value="chy"/>
                <property name="password" value="abcd"/>
            </dataSource>
        </environment>
</environments>

考虑到更换数据库时,运维从一大堆代码很差找数据库的链接信息,咱们能够把数据库的链接信息拿出来,单独写在一个配置文件中。缓存

 

sql.properties:服务器

mysql_driver=com.mysql.cj.jdbc.Driver mysql_url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT
mysql_username=chy mysql_password=abcd #oracle_driver=..... #oracle_url=..... #oracle_username=..... #oracle_password=.....

 

mybatis-config.xml:mybatis

 <properties resource="sql.properties"></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql_driver}"/>
                <property name="url" value="${mysql_url}"/>
                <property name="username" value="${mysql_username}"/>
                <property name="password" value="${mysql_password}"/>
            </dataSource>
        </environment>
    </environments>

 

 


 

 

<settings>

用于设置mybatis运行时的参数。经常使用的项有:并发

  • cacheEnabled:是否使用缓存,boolean值,默认为false
  • lazyLoadingEnabled :是否使用懒加载,boolean值,默认为false
  • defaultStatementTimeout:设置超时时间,默认单位秒
  • mapUnderscoreToCamelCase:是否启用camel命名规则的映射,boolean值,默认为false
  • logImpl:使用的日志框架

 

通常只需配置logImpl:oracle

<settings>
        <setting name="logImpl" value="LOG4J"/>
</settings>

若是不使用日志框架,能够缺省此配置。

 

 


 

 

<typeAlias>

用于配置pojo类别名。

 

在映射文件中,若是parameterType、 resultType是本身写的pojo类,必须使用全限定类名:

resultType="com.chy.pojo.Student"

又臭又长,很麻烦。可使用别名。

 

 

配置pojo类的别名:

<typeAliases>
        <typeAlias type="com.chy.pojo.Student" alias="Student"/>
        <typeAlias type="com.chy.pojo.Teacher" alias="Teacher"/>
 </typeAliases>
resultType="Student"

直接写别名便可。

若是缺省alias属性,默认为类名的camel写法,好比Student => student。

 

 

也可使用注解来配置pojo类的别名:

@Alias(value = "Student") public class Student { //......
}

能够缺省属性名,简写为

@Alias("Student")

 

 

若是以为一个一个地配置pojo类很麻烦,可使用包自动扫描:

<typeAliases>
        <package name="com.chy.pojo"/>
</typeAliases>

这个包下全部的pojo类都使用camel命名方式的别名。

 

在映射文件中使用别名有一个缺点:Ctrl+左键不会转到定义处。

 

 


 

 

<typeHandlers>

将参数传给预处理语句时,须要将数据从javaType(java类型)转换为jdbcType(jdbc类型);

将结果集中的数据转换为指定类型时,须要将数据从jdbcType转换为javaType。

这2个过程都要用到typeHandler(类型转换器)。通常咱们使用mybatis自带的类型转换器便可,也能够在<typeHandlers>中引用自定义的类型转换器。

 

 


 

 

<objectFactory>

ObjectFactory负责建立结果实例。

将查询结果映射为指定对象时,默认的ObjectFactory先调用无参的构造器建立pojo类的实例,再调用setter方法注入值。

通常咱们使用默认的ObjectFactory便可,也能够在<objectFactory>中引用自定义的ObjectFactory类。

 

 


 

 

<plugins>

mybatis容许在将查询结果映射为指定类型的过程当中,以插件形式执行自定义的代码。

 

 


 

 

<environments>

环境配置,mybatis是持久层框架,它的环境天然是数据库,即数据库的配置。

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql_driver}"/>
                <property name="url" value="${mysql_url}"/>
                <property name="username" value="${mysql_username}"/>
                <property name="password" value="${mysql_password}"/>
            </dataSource>
        </environment>
</environments>

通常要配置多个环境,开发一个环境,正式使用一个环境。default指定要使用哪一个<environment>。

 

 

一个<environment>即一个环境(数据库配置)。

<transactionManager>指定使用哪一种事务管理,一般使用JDBC的事务管理。若是搭配Spring使用,通常使用Spring的事务管理(在spring中配置事务管理),不在mybatis中配置事务。

<dataSource>配置数据源,mybatis提供了三种数据源:

  • UNPOOLED    不使用链接池
  • POOLED   使用链接池
  • JNDI   适合在在EJB或应用服务器等容器中使用

type指定使用哪一种数据源,<property>子元素设置具体选项。

 

 

UNPOOLED

不使用链接池,适合对性能没有要求的、简单的应用程序。

经常使用属性:

  • driver、url、username、password
  • defaultTransactionlsolationLevel   设置默认的事务隔离级别

 

 

POOLED

操做数据库速度更快,适合高并发的程序,很经常使用。

经常使用属性:

  • driver、url、username、password
  • defaultTransactionlsolationLevel   设置默认的事务隔离级别
  • poolMaximumActiveConnections   最大活跃链接数
  • poolMaximumIdleConnections   最大闲置链接数

 

 


 

 

<mapper>

用于引入映射文件。写法不少,经常使用的有3种:

  •  经过映射文件的路径引入
<mappers>
        <mapper resource="com/chy/mapper/StudentMapper.xml"/>
        <mapper resource="com/chy/mapper/TeacherMapper.xml"/>
</mappers>

 

 

  • 经过mapper接口类引入
<mappers>
        <mapper class="com.chy.mapper.StudentMapper"/>
</mappers>

 

 

  • 经过包名引入
<mappers>
        <package name="com.chy.mapper"/>
</mappers>

这种最经常使用,能够一次性引入mapper包下全部的映射文件。

相关文章
相关标签/搜索