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

作者:Joanna.Yan 时间:2022-03-21 05:25:23 

前面有写到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文件:


jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/mybatisdemo
jdbc.username=root
jdbc.password=

在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>
 <!-- 加载数据库文件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单个别名定义


<!-- 单个别名定义: -->
<typeAliases>
 <typeAlias type="joanna.yan.mybatis.entity.User" alias="user"/>
</typeAliases>

引用别名:


<select id="findUserById" parameterType="int" resultType="user">
 select * from user where id=#{id}
</select>

3.3.2批量定义别名(常用)


<!--
 批量别名的定义:
 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加载单个文件


<!-- 加载映射文件 -->
<mappers>
 <!-- 通过resource方法一次加载一个映射文件 -->
 <mapper resource="mapper/UserMapper.xml"/>
</mappers>

5.2通过mapper接口加载单个mapper


<!-- 加载映射文件 -->
<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(推荐使用)


<mappers>
 <!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载;
  遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
  以上规范的前提是:使用的是mapper代理方法;
  -->
 <package name="joanna.yan.mybatis.mapper"/>
</mappers>

以上所述是小编给大家介绍的Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析网站的支持!

来源:http://www.cnblogs.com/Joanna-Yan/p/6874672.html

标签:mybatis,配置文件
0
投稿

猜你喜欢

  • SpringBoot项目打jar包与war包的详细步骤

    2022-01-12 01:28:21
  • Ribbon单独使用,配置自动重试,实现负载均衡和高可用方式

    2023-05-12 00:49:15
  • Java 你知道什么是耦合、如何解(降低)耦合

    2022-03-23 08:44:19
  • Java利用Jackson序列化实现数据脱敏详解

    2023-12-22 17:47:38
  • Android利用LitePal操作数据库存取图片

    2021-06-14 14:57:45
  • spring基础概念AOP与动态代理理解

    2022-01-29 20:55:13
  • Android使用SoundPool播放音效

    2021-11-24 02:32:36
  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    2023-04-19 15:01:55
  • mybatis 集合嵌套查询和集合嵌套结果的区别说明

    2022-10-12 15:17:02
  • 解决IntelliJ IDEA中鼠标拖动选择为矩形区域问题

    2022-04-03 21:08:51
  • Kotlin超简单实现StepView的方法

    2022-01-21 09:28:27
  • Spring Boot 工程的创建和运行(图文)

    2022-06-26 15:39:49
  • 详解Java中Math.round()的取整规则

    2022-10-20 14:22:01
  • Android操作存放在assets文件夹下SQLite数据库的方法

    2023-12-13 21:00:26
  • Android自定义View软键盘实现搜索

    2022-02-10 07:22:45
  • MyBatis基础支持DataSource实现源码解析

    2023-01-16 09:58:07
  • c#和javascript函数相互调用示例分享

    2023-10-08 21:33:52
  • C# 8.0可空引用类型的使用注意记录

    2022-10-03 23:29:40
  • unity实现手游虚拟摇杆

    2021-11-23 07:16:44
  • java 数据结构基本算法希尔排序

    2021-09-14 02:09:50
  • asp之家 软件编程 m.aspxhome.com