SqlMapConfig.xml中配置的内容和顺序
1、properties(属性)
2、settings(全局配置参数)
3、typeAliases(类型别名)
4、typeHandlers(类型处理器)
5、objectFactory(对象工厂)
6、plugins(插件)
7、environments(环境集合属性对象)
>environment(环境子属性对象)
>transactionManager(事务管理)
>dataSource(数据源)
8、mappers(映射器)
其中typeAliases(类型别名)和mappers(映射器)是重点。
properties(属性)
将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。原因:方便对参数进行统一管理,其它xml也可以引用该db.properties。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://120.25.162.238:3306/mybatis?characterEncoding=utf-8&serverTimezone
jdbc.username=root
jdbc.password=
在sqlMapConfig.xml加载属性文件:
<properties resource="db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由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="${jdbc.password}" />
</dataSource>
</environment>
</environments>
注意: MyBatis 将按照下面的顺序(优先级)来加载属性:
1、在properties元素体内定义的属性首先被读取。
2、然后会读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。
3、最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
建议:
1、不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
2、在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX
settings(全局参数配置)
mybatis框架在运行时可以调整一些运行参数,比如:开启二级缓存、开启延迟加载…
全局参数将会影响mybatis的运行行为。具体参考官网:
typeAliases(类型别名)
在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。
如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
(1)mybatis默认支持别名
(2)自定义别名
1、单个别名定义
2、批量定义别名(常用)
<!-- 别名定义 -->
<typeAliases>
<!-- 针对单个别名定义
type:类型的路径
alias:别名
-->
<!-- <typeAlias type="com.echodemo.mybatislearning.bean.User" alias="user"/> -->
<!-- 批量别名定义
指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名
(首字母大写或小写都可以)
-->
<package name="com.echodemo.mybatislearning.bean"/>
</typeAliases>
typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和java类型的转换。例如:
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
mybatis自带的类型处理器基本上满足日常需求,不需要单独定义。
http://www.mybatis.org/mybatis-3/configuration.html#typeHandlers
mappers(映射配置)
(1)通过resource加载单个映射文件:
<mappers>
<!--通过resource方法一次加载一个映射文件 -->
<mapper resource="UserMapper.xml"></mapper>
</mappers>
<!--在pom文件中的build标签里面加入相应的路径指引-->
<resources>
<!-- mapper中通过resource方法一次加载一个映射文件的路径依赖指引 -->
<resource>
<directory>src/main/java/com/echodemo/mybatislearning/mapper</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
(2)通过mapper接口加载单个mapper:
<!-- 通过mapper接口加载单个映射文件
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,
且在一个目录中上边规范的前提是:使用的是mapper代理方法
-->
<mapper class="com.echodemo.mybatislearning.mapper.UserMapper"/>
(3)目录示例:
com.iot.mybatis.mapper------------------package包
|----UserMapper.java
|----UserMapper.xml
(4)批量加载mapper(推荐使用)
<mappers>
<!-- 批量加载mapper
指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,
且在一个目录中上边规范的前提是:使用的是mapper代理方法
-->
<package name="com.echodemo.mybatislearning.mapper"/>
</mappers>
<!--在pom文件中的build标签里面加入相应的路径指引-->
<resources>
<!-- 批量加载mapper指定mapper接口的包名的路径依赖指引 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
改文章转载自:mybatis学习笔记(5)-配置文件