<?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,后面即可动态引用此属性-->
<properties resource="connection.properties">
<property name="password" value="qiyu0126"/>
</properties>
<!-- mybatis的一些内置配置 -->
<settings>
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
<!-- 空间别名,可以简化mapper中的书写 -->
<typeAliases>
<!--
<typeAlias type="org.senssic.bean.Address" alias="Address"/>
<typeAlias type="org.senssic.bean.Person" alias="Person"/>
-->
<!-- 一般用这个,对应为Address和Person -->
<package name="org.senssic.bean" />
</typeAliases>
<!-- 处理从数据库中转化为java类型转换类需要继承BaseTypeHandler,除非特殊需要,一般用不到
<typeHandlers>
<typeHandler handler=""/>
</typeHandlers>
-->
<environments default="development">
<!-- 默认的要和下面的一个environment一致 -->
<environment id="development">
<transactionManager type="jdbc"><!-- MANAGED--不管理事务,让容器来管理比如spring -->
</transactionManager>
<dataSource type="pooled"><!-- UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。
JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/senssic/bean/AddressMapper.xml"/>
<mapper resource="org/senssic/bean/PersonMapper.xml"/>
</mappers>
</configuration>
1.settings节点
设置项 描述 允许值 默认值
cacheEnabled 对在此配置文件下的所有cache 进行全 true| false true
局性开/关设置。
lazyLoadingEnabled 全局性设置懒加载。如果设为‘关’, true| false true
则所有相关联的都会被初始化加载。
aggressiveLazyLoading 当设置为‘开’的时候,懒加载的对象 true| false true
可能被任何懒属性全部加载。否则,每 个属性都按需加载。
multipleResultSetsEnabled 允许和不允许单条语句返回多个数据 true| false true
集(取决于驱动需求)
useColumnLabel 使用列标签代替列名称。不用的驱动器 true| false true
有不同的作法。参考一下驱动器文档,
或者用这两个不同的选项进行测试一
下。
useGeneratedKeys 允许JDBC生成主键。需要驱动器支持。 true| false False
如果设为了true,这个设置将强制使用
被生成的主键,有一些驱动器不兼容不
过仍然可以执行。
autoMappingBehavior 指定MyBatis是否并且如何来自动映射 NONE, PARTIAL, FULL PARTIAL
数据表字段与对象的属性。PARTIAL
将只自动映射简单的,没有嵌套的结
果。FULL 将自动映射所有复杂的结果。
defaultExecutorType 配置和设定执行器,SIMPLE 执行器执 SIMPLE REUSE BATCH SIMPLE
行其它语句。REUSE 执行器可能重复
使用preparedstatements语句,BATCH
执行器可以重复执行语句和批量更新。
defaultStatementTimeout 设置一个时限,以决定让驱动器等待数 正整数 NotSet
据库回应的多长时间为超时 (null)
2.typeAliases节点
对于普通的 Java 类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载 的名字,要注意原生类型的特殊处理。
别名 | 映射的类型 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
事务:
- JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。
- MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。
UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。 不同的数据库对这 个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的。 UNPOOLED 类型的数据源仅仅用来配置以下 5 种属性:
- driver – 这是 JDBC 驱动的 Java 类的完全限定名(如果你的驱动包含,它也不是 数据源类)。
- url – 这是数据库的 JDBC URL 地址。
- username – 登录数据库的用户名。
- password – 登录数据库的密码。
- defaultTransactionIsolationLevel – 默认的连接事务隔离级别。
作为可选项,你可以传递数据库驱动的属性。要这样做,属性的前缀是以“driver.”开 头的,例如:
- driver.encoding=UTF8
这 样 就 会 传 递 以 值 “ UTF8 ” 来 传 递 属 性 “ encoding ”, 它 是 通 过 DriverManager.getConnection(url,driverProperties)方法传递给数据库驱动。
POOLED – 这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例 时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方 法。
除了上述(UNPOOLED)的属性之外,还有很多属性可以用来配置 POOLED 数据源:
- poolMaximumActiveConnections – 在任意时间存在的活动(也就是正在使用)连 接的数量。默认值:10
- poolMaximumIdleConnections – 任意时间存在的空闲连接数。
- poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检查的时间。默认 值:20000 毫秒(也就是 20 秒)
- poolTimeToWait – 这是给连接池一个打印日志状态机会的低层次设置,还有重新 尝试获得连接, 这些情况下往往需要很长时间 为了避免连接池没有配置时静默失 败)。默认值:20000 毫秒(也就是 20 秒)
- poolPingQuery – 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备 接受请求。默认是“NO PING QUERY SET” ,这会引起许多数据库驱动连接由一 个错误信息而导致失败。
- poolPingEnabled – 这是开启或禁用侦测查询。如果开启,你必须用一个合法的 SQL 语句(最好是很快速的)设置 poolPingQuery 属性。默认值:false。
- poolPingConnectionsNotUsedFor – 这是用来配置 poolPingQuery 多次时间被用一次。 这可以被设置匹配标准的数据库连接超时时间, 来避免不必要的侦测。 默认值: 0(也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用)。
JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这个数据源配置只需要两个属 性:
- initial_context – 这 个 属 性 用 来 从 初 始 上 下 文 中 寻 找 环 境 ( 也 就 是 initialContext.lookup(initial——context) 。这是个可选属性,如果被忽略,那么 data_source 属性将会直接以 initialContext 为背景再次寻找。
- data_source – 这是引用数据源实例位置的上下文的路径。它会以由 initial_context 查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始 上下文为环境来查找。