MyBatis 中 configuration配置详解

                        MyBatis中configuration配置详解

今天看到这篇MyBatis 中 configuration配置详解,感觉楼主(andy_hu1993)总结得不错。转载

原博主:andy_hu1993

原文:https://blog.csdn.net/u014034854/article/details/47375955

1、configuration有什么作用?

configuration管理MyBatis的配置,MyBatis的所有配置信息都存放的在configuration中。

下面我们看看configuration可配置的属性有哪些:

1.1  properties属性

实例:

在src中创建配置文件db.properties

  1.jdbc.driver = com.mysql.jdbc.Driver

  2.jdbc.url = jdbc:mysql://localhost:3306/mybatis

  3.jdbc.username= root

  4.jdbc.password= root

在Mybatis配置文件mybatis-config.xml中配置<properties.../>元素

1.<properties resource="db.properties"/>

这些都是外部化的,可替代的属性。其中的属性就可以再整个配置文件中使用,使用可替换的属性来实现动态配置,如下:

  1. <dataSource type="POOLED">

  2. <property name="driver" value="${driver}"/>

  3. <property name="url" value="${url}"/>

  4. <property name="username" value="${username}"/>

  5. <property name="password" value="${password}"/>

  6. </dataSource>

如果这些地方属性多余一个,没MyBatis按照下面的顺序加载:

在properties元素体内指定的属性首先被读取。

从类路径下资源或者properties元素的eurl属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。

作为方法参数船传递的属性最后被读取,他会覆盖任一已存在的完全一样的属性。

1.2  setings

这些是非常重要的属性,他会修改MyBatis在运行时的行为方式。如果不熟悉配置建议使用默认配置。

实例:

  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>

参数表格:

设置参数

描述

有效值

默认值

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

PARTIAL

1.3  typeAliases类型命名

实例:

  1. <typeAliases>

  2. <typeAlias alias="Author" type="domain.blog.Author"/>

  3. <typeAlias alias="Blog" type="domain.blog.Blog"/>

  4. <typeAlias alias="Comment" type="domain.blog.Comment"/>

  5. <typeAlias alias="Post" type="domain.blog.Post"/>

  6. <typeAlias alias="Section" type="domain.blog.Section"/>

  7. <package name="domain.blog.Tag"/>

  8. </typeAliases>

别名是为Java类型命名一个短的名字。它只用在XML配置文件里,用来减少类完全限定名的多余部分。例如在配置文件里需要使用domain.blog.Author的地方可以简单的使用Author替换。

对于普通的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

1.4typeHandlers类型处理器

实例:

  1. <typeHandlers>

  2. <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.mybatis.example.ExampleTypeHandler"/>

  3. </typeHandlers>

无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。

Mybatis已经有了若干个类型处理器了,如下:

类型处理器

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-任何兼容的字符串类型,作为代码存储(而不是索引)

1.5 plugins插件

实例:

  1. <plugins>

  2. <plugin interceptor="org.mybatis.example.ExamplePlugin">

  3. <property name="someProperty" value="100"/>

  4. </plugin>

  5. </plugins>

插件可以改变某些类的执行, MyBatis允许被插件来拦截的类有:

  1. Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

  2. ParameterHandler (getParameterObject, setParameters)

  3. ResultSetHandler (handleResultSets, handleOutputParameters)

  4. StatementHandler (prepare, parameterize, batch, update, query)

1.6environments环境

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

  1. <environments default="development">

  2. <environment id="development">

  3. <transactionManager type="JDBC">

  4. </transactionManager>

  5. <dataSource type="POOLED">

  6. <property name="driver" value="${driver}"/>

  7. <property name="url" value="${url}"/>

  8. <property name="username" value="${username}"/>

  9. <property name="password" value="${password}"/>

  10. </dataSource>

  11. </environment>

  12. </environments>

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

environment环境变量

environment通过id属性与其他数据库环境区别。它有两个子节点:

transactionManager事务管理器

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

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

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

dataSource数据源

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

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

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

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

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

password – 登录数据库的密码。

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

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

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

1.7 mapper映射器

实例:

  1. <mappers>

  2. <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>

  3. <mapper resource="org/mybatis/builder/BlogMapper.xml"/>

  4. <mapper resource="org/mybatis/builder/PostMapper.xml"/>

  5. </mappers>

Mappers用于告诉Mybatis去哪里寻找sql映射文件。sql映射文件是Mybatis最灵活的地方

猜你喜欢

转载自blog.csdn.net/qq_31935419/article/details/81433518