“基础:配置文件SqlMapConfig.xml”的版本间差异
跳到导航
跳到搜索
(→关于) |
|||
第66行: | 第66行: | ||
== settings == | == settings == | ||
mybatis全局配置参数,全局参数将会影响mybatis的运行行为。<br/> | |||
{| class="wikitable" style="width:100%" | |||
! style="width:5%"| Setting(设置) | |||
! style="width:70%"| Description(描述) | |||
! style="width:15%"| Valid Values(验证值组) | |||
! style="width:5%"| Default(默认值) | |||
|- | |||
| cacheEnabled | |||
| 在全局范围内启用或禁用缓存配置任何映射器在此配置下。 | |||
| <nowiki>true | false</nowiki> | |||
| TRUE | |||
|- | |||
| lazyLoadingEnabled | |||
| 在全局范围内启用或禁用延迟加载。禁用时,所有协会将热加载。 | |||
| <nowiki>true | false </nowiki> | |||
| TRUE | |||
|- | |||
| aggressiveLazyLoading | |||
| 启用时,有延迟加载属性的对象将被完全加载后调用懒惰的任何属性。否则,每一个属性是按需加载。 | |||
| <nowiki>true | false </nowiki> | |||
| TRUE | |||
|- | |||
| multipleResultSetsEnabled | |||
| 允许或不允许从一个单独的语句(需要兼容的驱动程序)要返回多个结果集。 | |||
| <nowiki>true | false </nowiki> | |||
| TRUE | |||
|- | |||
| useColumnLabel | |||
| 使用列标签,而不是列名。在这方面,不同的驱动有不同的行为。参考驱动文档或测试两种方法来决定你的驱动程序的行为如何。 | |||
| <nowiki>true | false </nowiki> | |||
| TRUE | |||
|- | |||
| useGeneratedKeys | |||
| 允许JDBC支持生成的密钥。兼容的驱动程序是必需的。此设置强制生成的键被使用,如果设置为true,一些驱动会不兼容性,但仍然可以工作。 | |||
| <nowiki>true | false </nowiki> | |||
| FALSE | |||
|- | |||
| autoMappingBehavior | |||
| 指定MyBatis的应如何自动映射列到字段/属性。NONE自动映射。 PARTIAL只会自动映射结果没有嵌套结果映射定义里面。 FULL会自动映射的结果映射任何复杂的(包含嵌套或其他)。 | |||
| <nowiki>NONE, PARTIAL, FULL </nowiki> | |||
| PARTIAL | |||
|- | |||
| defaultExecutorType | |||
| 配置默认执行人。SIMPLE执行人确实没有什么特别的。 REUSE执行器重用准备好的语句。 BATCH执行器重用语句和批处理更新。 | |||
| SIMPLE REUSE BATCH | |||
| SIMPLE | |||
|- | |||
| defaultStatementTimeout | |||
| 设置驱动程序等待一个数据库响应的秒数。 | |||
| Any positive integer | |||
| Not Set (null) | |||
|- | |||
| safeRowBoundsEnabled | |||
| 允许使用嵌套的语句RowBounds。 | |||
| <nowiki>true | false </nowiki> | |||
| FALSE | |||
|- | |||
| mapUnderscoreToCamelCase | |||
| 从经典的数据库列名A_COLUMN启用自动映射到骆驼标识的经典的Java属性名aColumn。 | |||
| <nowiki>true | false </nowiki> | |||
| FALSE | |||
|- | |||
| localCacheScope | |||
| MyBatis的使用本地缓存,以防止循环引用,并加快反复嵌套查询。默认情况下(SESSION)会话期间执行的所有查询缓存。如果localCacheScope=STATMENT本地会话将被用于语句的执行,只是没有将数据共享之间的两个不同的调用相同的SqlSession。 | |||
| <nowiki>SESSION | STATEMENT </nowiki> | |||
| SESSION | |||
|- | |||
| dbcTypeForNull | |||
| 指定为空值时,没有特定的JDBC类型的参数的JDBC类型。有些驱动需要指定列的JDBC类型,但其他像NULL,VARCHAR或OTHER的工作与通用值。 | |||
| JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | |||
| OTHER | |||
|- | |||
| lazyLoadTriggerMethods | |||
| 指定触发延迟加载的对象的方法。 | |||
| A method name list separated by commas | |||
| equals,clone,hashCode,toString | |||
|- | |||
| defaultScriptingLanguage | |||
| 指定所使用的语言默认为动态SQL生成。 | |||
| A type alias or fully qualified class name. | |||
| org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver | |||
|- | |||
| callSettersOnNulls | |||
| 指定如果setter方法或地图的put方法时,将调用检索到的值是null。它是有用的,当你依靠Map.keySet()或null初始化。注意原语(如整型,布尔等)不会被设置为null。 | |||
| <nowiki>true | false</nowiki> | |||
| FALSE | |||
|- | |||
| logPrefix | |||
| 指定的前缀字串,MyBatis将会增加记录器的名称。 | |||
| Any String | |||
| Not set | |||
|- | |||
| logImpl | |||
| 指定MyBatis的日志实现使用。如果此设置是不存在的记录的实施将自动查找。 | |||
| <nowiki>SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING</nowiki> | |||
| Not set | |||
|- | |||
| proxyFactory | |||
| 指定代理工具,MyBatis将会使用创建懒加载能力的对象。 | |||
| <nowiki>CGLIB | JAVASSIST </nowiki> | |||
| | |||
|} | |||
== typeAliases == | == typeAliases == | ||
== typeHandlers == | == typeHandlers == | ||
== mappers == | == mappers == |
2020年10月10日 (六) 03:05的版本
关于
SqlMapConfig.xml中配置的内容和顺序如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 配置 -->
<properties /> <!-- 属性 -->
<settings /> <!-- 设置 -->
<typeAliases /> <!-- 类型命名 -->
<typeHandlers /> <!-- 类型处理器 -->
<objectFactory /> <!-- 对象工厂 -->
<plugins /> <!-- 插件 -->
<environments> <!-- 配置环境 -->
<environment> <!-- 环境变量 -->
<transactionManager /> <!-- 事务管理器 -->
<dataSource /> <!-- 数据源 -->
</environment>
</environments>
<databaseIdProvider /> <!-- 数据库厂商标识 -->
<mappers /> <!-- 映射器 -->
</configuration>
properties
SqlMapConfig.xml可以引用java属性文件中的配置信息。
将数据库连接等参数单独配置在配置文件(如:db.properties)中,就可以在SqlMapConfig.xml中加载db.properties的属性值:
- SqlMapConfig.xml中不再需要对数据库连接参数硬编码;
- 其他xml也可以引用该配置文件,便于参数的同一管理;
在classpath下定义db.properties文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql
SqlMapConfig.xml:
<properties resource="db.properties"/>
...
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
MyBatis 将按照下面的属性加载顺序:【???】
- 在 properties 元素体内定义的属性首先被读取。
- 然后会读取 properties 元素中 resource 或 url 加载的属性,它会覆盖已读取的同名属性。
- 最后读取 parameterType (方法参数)传递的属性,它会覆盖已读取的同名属性。
因此,通过parameterType传递的属性具有最高优先级,resource或 url 加载的属性次之,最低优先级的是 properties 元素体内定义的属性。
settings
mybatis全局配置参数,全局参数将会影响mybatis的运行行为。
Setting(设置) | Description(描述) | Valid Values(验证值组) | Default(默认值) |
---|---|---|---|
cacheEnabled | 在全局范围内启用或禁用缓存配置任何映射器在此配置下。 | true | false | TRUE |
lazyLoadingEnabled | 在全局范围内启用或禁用延迟加载。禁用时,所有协会将热加载。 | true | false | TRUE |
aggressiveLazyLoading | 启用时,有延迟加载属性的对象将被完全加载后调用懒惰的任何属性。否则,每一个属性是按需加载。 | true | false | TRUE |
multipleResultSetsEnabled | 允许或不允许从一个单独的语句(需要兼容的驱动程序)要返回多个结果集。 | true | false | TRUE |
useColumnLabel | 使用列标签,而不是列名。在这方面,不同的驱动有不同的行为。参考驱动文档或测试两种方法来决定你的驱动程序的行为如何。 | true | false | TRUE |
useGeneratedKeys | 允许JDBC支持生成的密钥。兼容的驱动程序是必需的。此设置强制生成的键被使用,如果设置为true,一些驱动会不兼容性,但仍然可以工作。 | true | false | FALSE |
autoMappingBehavior | 指定MyBatis的应如何自动映射列到字段/属性。NONE自动映射。 PARTIAL只会自动映射结果没有嵌套结果映射定义里面。 FULL会自动映射的结果映射任何复杂的(包含嵌套或其他)。 | NONE, PARTIAL, FULL | PARTIAL |
defaultExecutorType | 配置默认执行人。SIMPLE执行人确实没有什么特别的。 REUSE执行器重用准备好的语句。 BATCH执行器重用语句和批处理更新。 | SIMPLE REUSE BATCH | SIMPLE |
defaultStatementTimeout | 设置驱动程序等待一个数据库响应的秒数。 | Any positive integer | Not Set (null) |
safeRowBoundsEnabled | 允许使用嵌套的语句RowBounds。 | true | false | FALSE |
mapUnderscoreToCamelCase | 从经典的数据库列名A_COLUMN启用自动映射到骆驼标识的经典的Java属性名aColumn。 | true | false | FALSE |
localCacheScope | MyBatis的使用本地缓存,以防止循环引用,并加快反复嵌套查询。默认情况下(SESSION)会话期间执行的所有查询缓存。如果localCacheScope=STATMENT本地会话将被用于语句的执行,只是没有将数据共享之间的两个不同的调用相同的SqlSession。 | SESSION | STATEMENT | SESSION |
dbcTypeForNull | 指定为空值时,没有特定的JDBC类型的参数的JDBC类型。有些驱动需要指定列的JDBC类型,但其他像NULL,VARCHAR或OTHER的工作与通用值。 | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | 指定触发延迟加载的对象的方法。 | A method name list separated by commas | equals,clone,hashCode,toString |
defaultScriptingLanguage | 指定所使用的语言默认为动态SQL生成。 | A type alias or fully qualified class name. | org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver |
callSettersOnNulls | 指定如果setter方法或地图的put方法时,将调用检索到的值是null。它是有用的,当你依靠Map.keySet()或null初始化。注意原语(如整型,布尔等)不会被设置为null。 | true | false | FALSE |
logPrefix | 指定的前缀字串,MyBatis将会增加记录器的名称。 | Any String | Not set |
logImpl | 指定MyBatis的日志实现使用。如果此设置是不存在的记录的实施将自动查找。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | Not set |
proxyFactory | 指定代理工具,MyBatis将会使用创建懒加载能力的对象。 | CGLIB | JAVASSIST |