SqlMapConfig.xml是Mybatis的全局配置文件,其内容如下:
properties(属性)
settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理) dataSource(数据源)
mappers(映射器)
(1)properties属性
需求:
将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。
在sqlMapConfig.xml加载属性文件:
properties特性:
注意: MyBatis 将按照下面的顺序来加载属性:
◆ 在 properties 元素体内定义的属性首先被读取。
◆ 然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
◆ 最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
(2)typeAliases(别名)重点
在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。
如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
别名 _byte _long _short _int _integer _double _float _boolean string byte long short int integer double float boolean date decimal bigdecimal
映射的类型 byte long short int int double float boolean String Byte Long Short Integer Integer Double Float Boolean Date
BigDecimal BigDecimal
(3)typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和java类型的转换。
通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.
mybatis支持类型处理器:
类型处理器
BooleanTypeHandler ByteTypeHandler ShortTypeHandler IntegerTypeHandler LongTypeHandler FloatTypeHandler DoubleTypeHandler BigDecimalTypeHandler StringTypeHandler ClobTypeHandler NStringTypeHandler NClobTypeHandler ByteArrayTypeHandler BlobTypeHandler DateTypeHandler DateOnlyTypeHandler TimeOnlyTypeHandler
Java类型 Boolean,boolean Byte,byte Short,short Integer,int Long,long Float,float Double,double BigDecimal String String String String byte[] byte[]
Date(java.util) Date(java.util)Date(java.util)
JDBC类型
任何兼容的布尔值
任何兼容的数字或字节类型 任何兼容的数字或短整型 任何兼容的数字和整型 任何兼容的数字或长整型任何兼容的数字或单精度浮点型
CHAR和VARCHAR类型 CLOB和LONGVARCHAR类型
NVARCHAR和NCHAR类型 NCLOB类型
任何兼容的字节流类型 BLOB和
LONGVARBINARY类型TIMESTAMP类型 DATE类型 TIME类型
SqlTimestampTypeHandler SqlDateTypeHandler SqlTimeTypeHandler ObjectTypeHandler EnumTypeHandler Timestamp(java.sql) Date(java.sql) Time(java.sql) 任意
Enumeration类型
TIMESTAMP类型 DATE类型 TIME类型
其他或未指定类型
VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。
(4)mappers(映射配置)
(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 resource="db.properties">
<!--properties中还可以配置一些属性名和属性值:-->
<!--property首先会被读取-->
<!--然后resource属性或是url(绝对路径)再被读取-->
<!--最后读取parameterType传递的值,他会覆盖已读取的同名属性-->
<!--建议:不要在properties元素体内添加任何属性值,只将属性定义在properties文件中-->
<!--在properties文件中定义属性名要有一定的特殊性,如:xxx.xxx-->
<!--<property name="jdbc.driver" value=""></property>-->
</properties>
<!--全局配置参数 :二级缓存,延迟加载-->
<!--<settings>-->
<!--<setting name="" value=""/>-->
<!--</settings>-->
<!--别名-->
<typeAliases>
<!--针对单个别名-->
<!--type:类型的路径-->
<!--alias:别名-->
<!--<typeAlias type="com.mybatis.po.User" alias="user"></typeAlias>-->
<!--批量别名定义-->
<!--mybatis会自动扫描包中的po类,自动定义别名,别名就是类名(首字母是大写或是小写都可以)-->
<package name="com.mybatis.po"></package>
</typeAliases>
<!--配置mybatis的运行环境,数据源,事务等-->
<!-- 和Spring整合后environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理,事务控制由mybatis管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池,由mybatis管理 -->
<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="${db.password}" />-->
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<!--<mapper resource="sqlmap/User.xml"/>-->
<!--通过resource一次加载一个映射文件-->
<!--<mapper resource="mapper/UserMapper.xml"/>-->
<!--通过mapper接口加载映射一个文件-->
<!--遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中-->
<!--上边规范的前提是:使用的是mapper代理方法-->
<!--<mapper class="com.mybatis.mapper.UserMapper"/>-->
<!--批量加载mapper-->
<!--指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载-->
<!--遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中-->
<!--上边规范的前提是:使用的是mapper代理方法-->
<package name="com.mybatis.mapper"/>
</mappers>
</configuration>