XML 映射配置文件
MyBatis XML 配置文件包含了影响 MyBatis 行为甚深的设置和属性信息。 XML 文档的高层级结构如下:
configuration 配置
properties 属性
settings 设置
typeAliases 类型命名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
databaseIdProvider chinese?
mappers 映射器
properties
这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递。例如:
<properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties>
其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如:
<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
</dataSource>
这个例子中的 username password 将会由 properties 元素中设置的值来替换。 driver url 属性将会从包含进来的 config.properties 文件中的值来替换。这里提供很多配置的选项。
属性也可以被传递到 SqlSessionBuilder.build()方法中。例如:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props);
// ... or ...
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props);
如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们:
properties 元素体内指定的属性首先被读取。
从类路径下资源或 properties 元素的 url 属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。
作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的属性,这些属性可能是从 properties 元素体内和资源/url 属性中加载的。
因此, 最高优先级的属性是那些作为方法参数的, 然后是资源/url 属性, 最后是 properties
素中指定的属性。
settings
这些是极其重要的调整, 它们会修改 MyBatis 在运行时的行为方式。下面这个表格描述了设置信息,它们的含义和默认值。
properties是什么文件
设置参数
描述
有效值
默认值
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
defaultExecutorType
配置默认的执行器。SIMPLE 执行器没 有什么特别之处。REUSE 执行器重用 预处理语句。BATCH 执行器重用语句 和批量更新
SIMPLE REUSE BATCH
SIMPLE
defaultStatementTimeout
设置超时时间, 它决定驱动等待一个数 据库响应的时间。平板怎样打开文献格式php
Any positive integer
Not Set (null)
safeRowBoundsEnabled
Allows using RowBounds on nested statements.
true | false
False
mapUnderscoreToCamelCase
Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn.
true | false
False
localCacheScope
MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession.
SESSION | STATEMENT
SESSION
jdbcTypeForNull
Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, VARCHAR or OTHER.
JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER
OTHER
lazyLoadTriggerMethods
Specifies which Object's methods trigger a lazy load
A method name list separated by commas
equals,clone,hashCode,toString
一个设置信息元素的示例,完全的配置如下所示:
<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="autoMappingBehavior" value="PARTIAL"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25000"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
typeAliases
类型别名是为 Java 类型命名一个短的名字。它只和 XML 配置有关, 只用来减少类完全限定名的多余部分。例如:
<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
  <typeAlias alias="Blog" type="domain.blog.Blog"/>
  <typeAlias alias="Comment" type="domain.blog.Comment"/>
  <typeAlias alias="Post" type="domain.blog.Post"/>
  <typeAlias alias="Section" type="domain.blog.Section"/>
  <typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
使用这个配置, “Blog”可以任意用来替代“domain.blog. Blog”所使用的地方。
You can also specify a package where MyBatis will search for beans. For example:
<typeAliases>
  <package name="domain.blog"/>
</typeAliases>
Each bean found in domain.blog , if no annotation is found, will be registered as an alias using uncapitalized non-qualified class name of the bean. Thas is domain.blog.Author will be registered as Author . If the @Alias annotation is found its value will be used as an alias. See the example below:
@Alias("author")
public class Author {
    ...
}
对于普通的 Java 类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。
前端cms模板
别名
映射的类型
_byte
byte
_long
long python生成json文件
_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
typeHandlers
无论是 MyBatis 在预处理语句中设置一个参数, 还是从结果集中取出一个值时, 类型处理器被用来将获取的值以合适的方式转换成 Java 类型。下面这个表格描述了默认的类型处理器。
类型处理器
Java 类型
JDBC 类型
BooleanTypeHandler
java.lang.Boolean, boolean
任何兼容的布尔值
ByteTypeHandler
java.lang.Byte, byte
任何兼容的数字或字节类型
ShortTypeHandler
java.lang.Short, short
任何兼容的数字或短整型
IntegerTypeHandler
java.lang.Integer, int
任何兼容的数字和整型
LongTypeHandler
java.lang.Long, long
任何兼容的数字或长整型
FloatTypeHandler
java.lang.Float, float
任何兼容的数字或单精度浮点型
DoubleTypeHandler
java.lang.Double, double
任何兼容的数字或双精度浮点型
BigDecimalTypeHandler
java.math.BigDecimal
任何兼容的数字或十进制小数类型
StringTypeHandler
java.lang.String
CHAR VARCHAR 类型
ClobTypeHandler
java.lang.String
CLOB LONGVARCHAR 类型
NStringTypeHandler
java.lang.String
NVARCHAR NCHAR 类型
NClobTypeHandler
表格样式在哪里改java.lang.String
NCLOB 类型
ByteArrayTypeHandler
byte[]
任何兼容的字节流类型
BlobTypeHandler
byte[]
BLOB LONGVARBINARY 类型
DateTypeHandler
java.util.Date
TIMESTAMP 类型
DateOnlyTypeHandler
java.util.Date
DATE 类型
TimeOnlyTypeHandler
java.util.Date
TIME 类型
SqlTimestampTypeHandler
java.sql.Timestamp
TIMESTAMP 类型
SqlDateTypeHandler
java.sql.Date
DATE 类型
SqlTimeTypeHandler
java.sql.Time
TIME 类型
ObjectTypeHandler怎么把html变成js
Any
其他或未指定类型
EnumTypeHandler
Enumeration Type
VARCHAR-任何兼容的字符串类型, 作为代码存储(而不是索引)
EnumOrdinalTypeHandler
Enumeration Type
Any compatible NUMERIC or DOUBLE, as the position is stored (not the code itself).
你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。 //TODO translation needed To do so, simply extend the org.pe.BaseTypeHandler class and optionally map your new TypeHandler class to a JDBC type. 例如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。