Mybatis的配置文件

主要元素

在Mybatis核心配置文件中,<configuration>时配置文件的根元素。其元素的的主要配置元素如下
这里写图片描述

properties元素

<properties>是一个配置属性的元素,该元素通常用于将内部的配置外在化,即通过外部的配置来动态地替换内部定义地属性。
1,创建一个db.properties地配置文件,内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

2,之后在配置文件中用properties标签引入这些属性

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"/>
    <environments default="mysql">
        <environment id="mysql">
            <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="com/itheima/mapper/CustomerMapper.xml"/>
    </mappers>
</configuration>

settings元素

settings元素主要用于改变MyBatis运行时地行为,例如开启二级缓存、开启延迟加载等
* cacheEnabled:该配置影响所有映射器中配置地缓存全局开关,
*

设置参数描述有效值默认值
cacheEnabled该配置影响所有映射器中配置地缓存全局开关true/falsefalse
lazyLoadingEnabled延迟加载地全局开关。所以关联对象都会延迟加载。特定关联关系中可以通过设置fetchType属性来覆盖该项地开关设置true/falsefalse
aggressiveLazyLoading关联对象属性地延迟加载开关。当启用时,对任意延迟属的调用会使带有延迟加载属性的对象完整加载;反之,每种属性都会按需加载true/falsetrue
multipleResultSetsEnabled是否允许单一语句返回多结果集(需要兼容驱动)true/falsetrue
useColumnLabel使用列标签代替列名。不同的驱动有不同的表现true/falsetrue
useGeneratedKeys允许JDBC支持自动生成主键,需要驱动兼容。如果设置为true,则这个设置强制使用自动生成主键,尽管一些驱动不兼容但仍可以正常工作true/falsefalse
autoMappingBehavior指定MyBatis应如何自动映射到字段或属性。NONE表示取消自动映射;PARTAL只会自动映射没有定义嵌套结果集映射的结果集;FULL会自动映射任意复杂的结果集(物理是否嵌套)NONE、PAERIAL、FULLPARIAL
defaultExecutorType配置默认的执行器。SIMPLE就是普通的执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新SIMPLE、REUSE、BATCHSIMPLE
defaultStatementTimeout设置超时间、它决定驱动等待数据库响应的秒数。当没有设置的时候,它取的就是驱动默认时间任何正整数没有设置
mapUnderscoreToCamelCase是否开启自动驼峰命名规则映射true/falsefalse
jdbcTypeForNull当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型。某些驱动需要指定列的JDBC类型,多数情况直接用一般类型即可,比如NULL、VARCHARhuoOTHERNULL、VARCHAR、OTHEROTHER

配置使用如下:

<settings>
    <setting name="cacheEnabled" value="true" />
    <setting name="lazyLoadingEnabled" value="true" />
</settings>

typeAliases

该元素用于为配置文件中的Java类型设置一个简短的名字,即设置别名。
使用方法如下:

<typeAliases>
    <typeAlias alias="user" type="com.itheima.po.User />
</ltypeAliases>

除了这个处理方法外,还可以通过扫描包来自定义别名

<typeAliases>
    <package name="com.itheima.po"/>
</typeAliases>

以上MyBatis会将所有com.itheima.po包中的POJO类以首字母小写的非限定类名来作为它的别名。但是如果在类中使用了注解,则别名以注解为准。

@Alias(value="user")
public class User {
    ...
}

MyBatis还默认了许多常见的java类型提供了相应的类型别名

别名映射类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

typeHandler

MyBatis在预处理语句(PreparedStatement)中设置一个参数或者从结果集(ResultSet)中取出一个值时,都会用其框架内注册了的typeHandler(类型处理器)进行相关处理。typeHandler的作用就是将预处理语句中传入的参数从javaType(java类型)转换为jdbcType(JDBC类型),或者从数据库取出结果时将jdbcType转换为javaType。

objectFactory

MyBatis框架每次创建结果对象的新实例时,都会使用一个对象工厂(ObjectFactory)的实例来完成。MyBatis中默认的ObjectFactory的作用就是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。

plugins

MyBatis允许在已映射语句执行过程中的某一点进行拦截调用,这种拦截调用是通过插件来实现的。plugins元素的作用就是配置用户所开发的插件。

environments

该元素用于对环境进行配置。MyBatis的环境配置实际上就是数据源的配置。我们可以通过environments元素配置多种数据源,即配置多种数据库。

<environments default="mysql">
        <environment id="mysql">
            <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>

environments元素是环境配置的根元素,它包含一个default属性,用于指定默认的环境ID。其子元素environment,可以定义多个,其id属性用于表示所定义环境的ID值。在environment中需要配置两个子元素,transactionManager和dataSource。

transactionManager

该标签需要指定type属性,其值有JDBC和MANAGED。如果项目中使用的是Spring+MyBatis,则没有必要配置事务管理器。
* JDBC:此配置直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务的作用域
* MANAGED:此配置从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。在默认情况下,它会关闭连接,但一些容器并不希望这样,为此可以将closeConnection属性设置为false来阻止它默认的关闭行为。

dataSource

该标签需要指定type类型,对应不同的type类型,需要配置不同的property标签。
1,UNPOOLED
配置此数据源类型后,在每次被请求时会打开和关闭连接。它对没有性能需求的简单应用程序是一个很好的选择。其需要配置五个属性。

属性说明
driverJDBC驱动的java类的完全限定名
url数据库的URL地址
username登录数据库的用户名
password登录数据库的密码
defaultTransatcionIsolationLevel默认的连接事务隔离级别

2,POOLED
此数据库利用”池“的慨念将JDBC连接对象组织起来,避免了在创建新的连接实例时所需要的初始化和认证的时间。这种方式使得WEB可以快速地响应请求,是当前流行的处理方式。
除了有UNPOOLED的五种属性外,还可以配置其他属性。

属性说明
poolMaximumActiveConnections在任意时间可以存在的活动连接数量,默认值10
poolMaximumIdleConnections任意时间可能存在的空闲连接数
poolMaximumCheckoutTime在强制返回之前,池中连接被检出时间,默认值是20000毫秒,即20秒
poolTimeToWait如果获取连接花费的时间较长,它会给连接池打印状态并重新尝试获取一个连接
poolPingQuery发送到数据库的侦测查询,用于检验连接是否处于在正常工作秩序中。默认是“NO PING QUERY SET”
poolPingEnabled是否启用侦测查询,若开启,必须使用一个可执行的SQL语句设置poolPingQuery属性,默认值false
poolPingConnectionsNotUsedFor配置poolPingQuery的使用频度。可以被设置成匹配具体的数据库连接超时时间,来避免不必要的侦测。默认值0。(表示所有连接每一时刻都被侦测,只有poolPingEnabled的属性值为true时适用)

3,JNDI
此数据源可以在EJB或应用服务器等容器中使用。容器可以集中或在外部配置数据源,然后防止一个JNDI上下文的引用。配置JNDI数据源时,只需要配置两个属性。如下

属性说明
initial_context此属性主要用于在IntialContext中寻找上下文
data_source此属性表示引用数据源实例位置的上下文路径。

mappers

在配置文件中,该元素用于指定MyBatis映射文件的位置。一般可以使用以下4种方法引入映射器文件。
1,使用类路径引入

<mappers>
    <mapper resource="com/itheima/mapper/UserMapper.xml" />
</mappers>

2,使用本地文件路径引入

<mappers>
    <mapper url="file:///D:/com/itheima/mapper/UserMapper.xml"/>
</mappers>

3,使用接口类引入

<mappers>
    <mapper class="com.itheima.mapper.UserMapper"/>
</mappers>

4,使用包名引入

<mappers>
    <package name="com.itheima.mapper/>
</mappers>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值