【Mybatis】sqlMapConfig.xml配置文件解析
2017-08-06 21:04
776 查看
SqlMapConfig.xml是Mybatis核心配置文件,下面总结一下该配置文件的内容和配置顺序。
【配置内容】
1、properties(属性)
2、settings(全局配置参数)
3、typeAliases(类型别名)
4、typeHandlers(类型处理器)
5、objectFactory(对象工厂)
6、plugins(插件)
7、environments(环境集合属性对象)
A、environment(环境子属性对象)
a、transactionManager(事务管理)
b、dataSource(数据源)
8、mappers(映射器)
![](https://img-blog.csdn.net/20170731212311287?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3dlbnJ1NjY4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
【具体】
一、properties属性
作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。
db.properties的内容:
[plain] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;">jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql
</span>
SqlMapConfig.xml引用如下:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- 属性定义 加载一个properties文件 在 properties标签 中配置属性值 -->
<properties resource="db.properties"></span>
然后编写environments:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<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></span>
注意:在<properties>内部还可以定义属性值:<property name="" value=""/>,在property中定义的属性也可以被<evironments>中来加载,这就涉及到了mybatis加载属性的顺序了:
1、在<properties>元素体内定义的首先被读取
2、然后读取<properties>元素中resource或者url加载的属性,它会覆盖已读取的同名属性
3、最后读取parameterType传递的属性(使用${}这种方式,不是#{}这种方式),它会覆盖已读的同名属性
最好不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。另外在properties文件中定义的属性名要有一定的特殊性,如xxx.xxx,这样不容易和其他的一些属性值起冲突。
二、settings全局参数配置
mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等,全局参数会影响mybatis的运行行为。
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><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="25"/>
<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></span>
三、typeAiases(类型别名)
在mapper.xml中定义了很多的statement,statement需要parameterType来指定输入参数的类型、需要resultType来指定输出结果的类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>来定义,方便开发。
1、mybatis有默认支持的一些别名:
2、自定义别名
在SqlMapConfig.xml中配置:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="cn.itcast.mybatis.po.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="cn.itcast.mybatis.po"/>
<package name="其它包"/>
</typeAliases>
</span>
四、typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和Java类型的转换,mybatis默认提供很多类型处理器,一般情况下够用了。
五、mappers(映射配置)
Mapper配置的几种方法:
1、<mapper resource=" " />
使用相对于类路径的资源:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper resource="sqlmap/User.xml" /></span>
2、<mapper url=" " />
使用完全限定路径:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" /></span>
3、<mapper class=" " />
使用mapper接口类路径:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper class="cn.itcast.mybatis.mapper.UserMapper"/></span>
4、<package name=""/>
注册指定包下的所有mapper接口:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><package name="cn.itcast.mybatis.mapper"/></span>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
【配置内容】
1、properties(属性)
2、settings(全局配置参数)
3、typeAliases(类型别名)
4、typeHandlers(类型处理器)
5、objectFactory(对象工厂)
6、plugins(插件)
7、environments(环境集合属性对象)
A、environment(环境子属性对象)
a、transactionManager(事务管理)
b、dataSource(数据源)
8、mappers(映射器)
【具体】
一、properties属性
作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。
db.properties的内容:
[plain] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;">jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql
</span>
SqlMapConfig.xml引用如下:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- 属性定义 加载一个properties文件 在 properties标签 中配置属性值 -->
<properties resource="db.properties"></span>
然后编写environments:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<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></span>
注意:在<properties>内部还可以定义属性值:<property name="" value=""/>,在property中定义的属性也可以被<evironments>中来加载,这就涉及到了mybatis加载属性的顺序了:
1、在<properties>元素体内定义的首先被读取
2、然后读取<properties>元素中resource或者url加载的属性,它会覆盖已读取的同名属性
3、最后读取parameterType传递的属性(使用${}这种方式,不是#{}这种方式),它会覆盖已读的同名属性
最好不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。另外在properties文件中定义的属性名要有一定的特殊性,如xxx.xxx,这样不容易和其他的一些属性值起冲突。
二、settings全局参数配置
mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等,全局参数会影响mybatis的运行行为。
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><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="25"/>
<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></span>
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 |
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 | CGLIB |
在mapper.xml中定义了很多的statement,statement需要parameterType来指定输入参数的类型、需要resultType来指定输出结果的类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>来定义,方便开发。
1、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 |
在SqlMapConfig.xml中配置:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="cn.itcast.mybatis.po.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="cn.itcast.mybatis.po"/>
<package name="其它包"/>
</typeAliases>
</span>
四、typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和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 | 任意 | 其他或未指定类型 |
EnumTypeHandler | Enumeration类型 | VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。 |
Mapper配置的几种方法:
1、<mapper resource=" " />
使用相对于类路径的资源:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper resource="sqlmap/User.xml" /></span>
2、<mapper url=" " />
使用完全限定路径:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" /></span>
3、<mapper class=" " />
使用mapper接口类路径:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><mapper class="cn.itcast.mybatis.mapper.UserMapper"/></span>
4、<package name=""/>
注册指定包下的所有mapper接口:
[html] view
plain copy
<span style="font-family:KaiTi_GB2312;font-size:18px;"><package name="cn.itcast.mybatis.mapper"/></span>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
相关文章推荐
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析------------转载
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- MyBatis系列之(三):SqlMapConfig.xml全局配置文件解析
- Mybatis中的config.xml配置文件详细解析
- 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
- SqlMapConfig.xml配置文件---Mybatis学习笔记(七)
- ibatis连接数据库的配置文件SqlMapConfig.xml---解析
- spring和mybatis整合 sqlMapConfig.xml配置文件
- SqlMapConfig.xml全局配置文件解析
- mybatis进行测试时找不到配置文件:java.io.IOException: Could not find resource config/SqlMapConfig.xml 的解决