您的位置:首页 > 大数据 > 人工智能

Mybaits的配置文件详解

2015-06-18 10:52 621 查看
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

例如:

<settings>   
<setting name="cacheEnabled" value="true"/>   
<setting name="lazyLoadingEnabled" value="true"/>   
<setting name="multipleResultSetsEnabled" value="true"/>   
<setting name="useColumnLabel" value="true"/>   
<setting name="useGeneratedKeys" value="false"/>   
<setting name="enhancementEnabled" value="false"/>   
<setting name="defaultExecutorType" value="SIMPLE"/>   
<setting name="defaultStatementTimeout" value="25000"/> 

</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的使用过程中,会将数
4000
据库的类型和java的类型进行匹配转换。例如

<typeHandlers>   
<typeHandler javaType="String" jdbcType="VARCHAR" handler="org.mybatis.example.ExampleTypeHandler"/>   
</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)

配置实例如下:

<plugins>   
<plugin interceptor="org.mybatis.example.ExamplePlugin">   
<property name="someProperty" value="100"/>   
</plugin>   
</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–这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)
(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: