Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

2025-05-29 0 59

前面有写到spring+springmvc+mybatis深入学习及搭建(二)——mybatis原始dao开发和mapper代理开发

mybatis的全局配置文件sqlmapconfig.xml,配置内容和顺序如下:

properties(属性)

setting(全局配置参数)

typealiases(类名别名)

typehandlers(类名处理器)

objectfactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

  environment(环境子属性对象)

  transationmanager(事务管理)

  datasource(数据源)

mappers(映射器)

1.properties(属性)

需求:

将数据库连接参数单独配置在db.properties中,只需要在sqlmapconfig.xml中加载db.properties的属性值。在sqlmapconfig.xml中就不需要对数据库连接参数硬编码。

将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。

在classpath下定义db.properties文件:

?

1

2

3

4
jdbc.driver=com.mysql.jdbc.driver

jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo

jdbc.username=root

jdbc.password=

在sqlmapconfig.xml加载属性文件:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26
<?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>

<!-- 加载数据库文件db.properties -->

<properties resource="db.properties">

<!-- properties中陪可以配置一些属性名和属性值,此处的优先加载 -->

<!-- <property name="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>

</configuration>

properties特性:

注意:mybatis将按照下面的顺序来加载属性:

(1)在properties元素体内定义的属性首先被读取。

(2)然后会读取properties元素中resourse或url加载的属性,它会覆盖已读取的同名属性。

(3)最后读取parametertype传递的属性,它会覆盖已读取的同名属性。

所以这里可能就会存在一个问题:假如usermapper.xml中的有一个statement的入参名为name,

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

而db.properties中也有一个参数名叫name。

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

那最终usermapper.xml中的select会读取到name=root,而不是用户传入的值。

建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

在properties文件中定义属性名要有一定的特殊性,如:xxx.xxx.xxx,jdbc.url,jbdc.username。

2.settings(全局参数配置)

mybatis框架在运行时可以调整一些运行参数。

比如:开启二级缓存、开启延迟加载……

全局参数将会影响mybatis的运行行为。

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

3.typealiases(别名)重点

3.1需求

在mapper.xml中,定义很多的statement,而statement需要parametertype指定输入参数的类型,需要resulttype指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发。可以针对parametertype或resulttype指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

3.2mybatis默认支持别名

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

3.3自定义别名

3.3.1单个别名定义

?

1

2

3

4
<!-- 单个别名定义: -->

<typealiases>

<typealias type="joanna.yan.mybatis.entity.user" alias="user"/>

</typealiases>

引用别名:

?

1

2

3
<select id="finduserbyid" parametertype="int" resulttype="user">

select * from user where id=#{id}

</select>

3.3.2批量定义别名(常用)

?

1

2

3

4

5

6

7
<!--

批量别名的定义:

package:指定包名,mybatis会自动扫描包中的pojo类,自定义别名,别名就是类名(首字母大写或小写都可以) -->

<typealiases>

<package name="joanna.yan.mybatis.entity"/>

<!-- <package name="其它包名"/> -->

</typealiases>

4.typehandlers(类型处理器)

mybatis中通过typehandlers完成jbdc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义。

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

5.mappers(映射配置)

5.1通过resource加载单个文件

?

1

2

3

4

5
<!-- 加载映射文件 -->

<mappers>

<!-- 通过resource方法一次加载一个映射文件 -->

<mapper resource="mapper/usermapper.xml"/>

   </mappers>

5.2通过mapper接口加载单个mapper

?

1

2

3

4

5

6

7

8

9
<!-- 加载映射文件 -->

<mappers>

<!--

通过mapper接口加载单个映射配置文件

遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

以上规范的前提是:使用的是mapper代理方法;

-->

<mapper class="joanna.yan.mybatis.mapper.usermapper"/>

</mappers>

按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

5.3批量加载mapper(推荐使用)

?

1

2

3

4

5

6

7
<mappers>

<!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载;

遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

以上规范的前提是:使用的是mapper代理方法;

-->

<package name="joanna.yan.mybatis.mapper"/>

</mappers>

以上所述是小编给大家介绍的spring+springmvc+mybatis深入学习及搭建(三)之mybatis全局配置文件解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

原文链接:http://www.cnblogs.com/Joanna-Yan/p/6874672.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析 https://www.kuaiidc.com/116739.html

相关文章

发表评论
暂无评论