Mybaits的配置文件详解

configuration
    properties:可以引用外部的配置文件(1)
    settings:配置MyBaits运行时的行为(2)
    typeAliases:定义别名(3)
    typeHandlers:配置数据库类型和骄傲java类型转换,例如将varchar转换成string,但是这个是默认支持的,所以该信息主要用于配置非默认的类型转换器。(4)
    objectFactory:配置自定义的objectFactory(5)
    plugins:使用插件(6)
    environments:可以配置多个environment,但是每个sqlSessionFactory只能对应一个。(7)
        environment
            transactionManager:事务管理。jdbc或者managed(8)
            datasource:定义数据源(9)

    mapper :引用定义sql语句的映射的xml文件(10)

上述是一个典型Mybaits的configuration.xml文件的结构,根据每个属性的的序号,我们给出具体的范例以便理解。

(1)properties属性:这个属性可以用于引用外部的配置文件

新建database.properties文件,为了方便,该文件与configuration.xml文件同目录。内容为:

username=root

在configuration.xml文件中引入该配置文件

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

这时候,在configuration.xml中使用${username},引用属性文件中的内容,例如

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="com.yihaomen.mybaits.datasource.C3P0DataSourceFactory">
                <property name="driverClass" value="com.mysql.jdbc.Driver" />
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/caojiantong" />
                <property name="user" value="${username}" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

(2)settings:配置Mybaits的行为

设置参数

描述

有效值

默认值

cacheEnabled

这个配置使全局的映射器启用或禁用缓存。

true | false

true

lazyLoadingEnabled

全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。

true | false

true

aggressiveLazyLoading

当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。

true | false

true

multipleResultSetsEnabled

允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。

true | false

true

useColumnLabel

使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。

true | false

true

useGeneratedKeys

允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby)。

true | false

false

autoMappingBehavior

指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况)。

NONE,

PARTIAL,

FULL

PA

例如:

  1. <settings>   
  2. <setting name="cacheEnabled" value="true"/>   
  3. <setting name="lazyLoadingEnabled" value="true"/>   
  4. <setting name="multipleResultSetsEnabled" value="true"/>   
  5. <setting name="useColumnLabel" value="true"/>   
  6. <setting name="useGeneratedKeys" value="false"/>   
  7. <setting name="enhancementEnabled" value="false"/>   
  8. <setting name="defaultExecutorType" value="SIMPLE"/>   
  9. <setting name="defaultStatementTimeout" value="25000"/> 
  10. </settings> 
(3)typeAliases:定义别名

在类的使用过程中,我们需要写一长串的包名+类名,我们可以使用typeAliases定义简称进行简化使用。例如

<typeAliases>
        <typeAlias alias="User" type="com.yihaomen.mybatis.model.User" />
        <typeAlias alias="Article" type="com.yihaomen.mybatis.model.Article" />
    </typeAliases>

(4)typeHandlers:类型处理。

在Mybaits的使用过程中,会将数据库的类型和java的类型进行匹配转换。例如

  1. <typeHandlers>   
  2. <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.mybatis.example.ExampleTypeHandler"/>   
  3. </typeHandlers>  
Mybaits默认的类型转换器有:

型处理器

Java类型

JDBC类型

BooleanTypeHandler

Boolean,boolean

任何兼容的布尔值

ByteTypeHandler

Byte,byte

任何兼容的数字或字节类型

ShortTypeHandler

Short,short

任何兼容的数字或短整型

IntegerTypeHandler

Integer,int

任何兼容的数字和整型

LongTypeHandler

Long,long

任何兼容的数字或长整型

FloatTypeHandler

Float,float

任何兼容的数字或单精度浮点型

DoubleTypeHandler

Double,double

任何兼容的数字或双精度浮点型

BigDecimalTypeHandler

BigDecimal

任何兼容的数字或十进制小数类型

StringTypeHandler

String

CHAR和VARCHAR类型

ClobTypeHandler

String

CLOB和LONGVARCHAR类型

NStringTypeHandler

String

NVARCHAR和NCHAR类型

NClobTypeHandler

String

NCLOB类型

ByteArrayTypeHandler

byte[]

任何兼容的字节流类型

BlobTypeHandler

byte[]

BLOB和LONGVARBINARY类型

DateTypeHandler

Date(java.util)

TIMESTAMP类型

DateOnlyTypeHandler

Date(java.util)

DATE类型

TimeOnlyTypeHandler

Date(java.util)

TIME类型

SqlTimestampTypeHandler

Timestamp(java.sql)

TIMESTAMP类型

SqlDateTypeHandler

Date(java.sql)

DATE类型

SqlTimeTypeHandler

Time(java.sql)

TIME类型

ObjectTypeHandler

Any

其他或未指定类型

EnumTypeHandler

Enumeration类型

VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)

(5)objectFactory:对象工厂用于创建实例化对象,用的非常少,初学者无需关心。

(6)plugins:使用插件

插件可以改变MyBatis底层的行为,因此功能非常强大。但在对MyBatis深入理解前不要急着编写自己的插件,因为若插件编写不当,将导致整个MyBatis都不能正常工作。

MyBatis允许被插件来拦截的类有

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)

配置实例如下:

  1. <plugins>   
  2. <plugin interceptor="org.mybatis.example.ExamplePlugin">   
  3. <property name="someProperty" value="100"/>   
  4. </plugin>   
  5. </plugins>
(7)environments:环境

environments里可以配置多个environment,每个environment对应一个数据库环境。一个完整的定义如下

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

environments里的default属性表示默认的数据库环境,与某个environment的id相对应。

(8)transactionManager:事务管理

MyBatis中有两种事务管理器类型(也就是type=”[JDBC|MANAGED]”):

l JDBC这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。

l MANAGED这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如SpringJEE应用服务器的上下文)

(9)dataSource:数据源

MyBatis中有三种数据源类型(也就是type=”[UNPOOLED | POOLED| JNDI]”):

l UNPOOLED –这个数据源的实现是每次被请求时简单打开和关闭连接,需要配置的属性:

driver – 这是JDBC驱动的Java类的完全限定名

url – 这是数据库的JDBC URL地址。

username – 登录数据库的用户名。

password – 登录数据库的密码。

defaultTransactionIsolationLevel – 默认的连接事务隔离级别。

l POOLED –mybatis实现的简单的数据库连接池类型,它使得数据库连接可被复用,不必在每次请求时都去创建一个物理的连接。

l JNDI 通过jndi从tomcat之类的容器里获取数据源。

当然可以引用第三方的数据源,例如C3P0的连接池。

首先,实现UnpooledDataSourceFactory接口

public class C3P0DataSourceFactory extends UnpooledDataSourceFactory{
     public C3P0DataSourceFactory() {  
            this.dataSource = new ComboPooledDataSource();  
        }  
}

然后type就可以配置为自定义的值,例如type=com.yihaomen.mybaits.datasource.C3P0DataSourceFactory

(10)Mappers:引入映射器文件

<mappers>
        <mapper resource="com/yihaomen/mybatis/model/User.xml" />
        <mapper resource="com/yihaomen/mybatis/inter/User.xml" />
    </mappers>




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值