Configuration是干嘛的
Configuration就像是Mybatis的总管,Mybatis的所有配置信息都存放在这里,此外,它还提供了设置这些配置信息的方法。Configuration可以从配置文件里获取属性值,也可以通过程序直接设置。Configuration里可供配置的属性有:
1. properties属性
1) 配置示例
[html] view plaincopy
-
-
2) 用途 properties里配置的属性将被存放在Configuration的variables变量里,供Mybatis使用。此外在配置文件中,也可以使用这些属性,用来对配置项实现动态配置。比如: [html] view plaincopy
-
-
-
3) 注意事项 resource里也可指定属性值,并且resource里属性值的优先级高于property子节点里配置的值,也就是说resource的同名属性将会覆盖于property子节点里的值。 2. settings设置 1) 配置示例 [html] view plaincopy
-
-
-
-
-
2) 用途 setting节点里配置的值会直接改写Configuration对应的变量值,这些变量描述的是Mybatis的全局运行方式,如果对这些属性的含义不熟悉的话建议不要配置,使用默认值即可。下面这个表格描述了各个配置项的含义和默认值:
| 设置参数 |
描述 |
有效值 |
默认值 |
| 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 |
? 3) 注意事项 谨慎修改这些配置值。 3. typeAliases类型命名 1) 配置示例 [html] view plaincopy
-
-
-
-
2) 用途 别名是为Java类型命名一个短的名字。它只用在XML配置文件里,用来减少类完全限定名的多余部分。例如在配置文件里需要使用domain.blog.Author的地方可以简单的使用Author替换。 3) 注意事项 Mybatis里有一些默认的别名,不要覆盖这些别名:
| 别名 |
映射的类型 |
| _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 |
? 4. typeHandlers类型处理器 1) 配置示例 [html] view plaincopy
-
-
2) 用途 无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。 3) 注意事项 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类型 |
VAR |
|