MyBatis全局配置文件详解

作者:程序dunk 时间:2021-09-19 10:13:32 

MyBatis全局配置文件

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的

顶层结构如下:

  • configuration 配置

  • properties 属性

  • settings 设置

  • typeAliases 类型命名

  • typeHandlers 类型处理器

  • objectFactory 对象工厂

  • plugins 插件

  • environments 环境

  • environment 环境变量

  • transactionManager 事务管理器

  • dataSource 数据源

  • databaseIdProvider 数据库厂商标识

  • mappers 映射器

properties 属性

mybatis 可以使用properties来引入外部properties配置文件的内容

resource:引入类路径下的资源

url:引入网络路径或者磁盘路径下的资源


<properties resource="dbconfig.properties"></properties>

如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:

  • 在 properties 元素体内指定的属性首先被读取。

  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。 – 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

settings 设置

这是 MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为。

setting包含很多重要的设置项

setting:用来设置每一个设置项

name:设置项名

value:设置项的取值

mapUnderscoreToCamelCase:驼峰命名 last_name -> lastName


   <settings>
       <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>

MyBatis全局配置文件详解

typeAliases 类型命名

typeAliases:可以批量设置别名这个包下的每一个类

别名不区分大小写

创建一个默认的别名,就是简单类名小写

typeAlias:为某个java类型起别名

type:指定要起别名的类型全类名;默认别名就是类名小写:employee

alias:指定新的别名

MyBatis全局配置文件详解

package:为某个包下的所有类批量起别名

name:指定包名(为当前包下以及下面所有的后代包的每一个类都起一个默认的别名(类名小写))

MyBatis全局配置文件详解

存在的问题:

假设bean包下有一个类Employee,同时在bean包下有一个子包也有一个类叫Employee,此时这两个包的类名就会冲突,因此还可以使用注解的放上为类创建别名

@Alias("")

public class Employee{}

MyBatis全局配置文件详解

值得注意的是,MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。

MyBatis全局配置文件详解

environments 环境

mybatis可以配置多种环境 default指定使用某种环境,可以达到快速切换

environments:配置一个具体的环境信息;必须有两个标签,id代表当前环境的唯一标识

transactionManager 事务管理器

type:事务管理器的类型 [JDBC(使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。)|MANAGED(不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE应用服务器的上下文))]

JDBC:JdbcTransactionFactory

自定义事务管理器 实现TransactionFactory接口即可

dataSource 数据源

type:数据源的类型 [UNPOOLED(不使用连接池)|POOLED(使用连接池)|JNDI(在EJB 或应用服务器这类容器中查找指定的数据源)]

自定义数据源 实现DataSourceFactory接口

实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置

MyBatis全局配置文件详解

databaseIdProvider 数据库厂商标识

databaseIdProvider: 可以根据不同的数据库厂商执行不同的语句。

type:数据库类型 DB_VENDOR

作用就是得到数据库厂商标识(驱动自带的),mybatis就能根据数据库厂商标识来执行不同的sql

MYSQL Oracle SQL Server

value:为标识起一个别名,方便SQL语句使用databaseId属性引用

MyBatis全局配置文件详解

MyBatis全局配置文件详解

DB_VENDOR

会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置。由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其

变短

MyBatis匹配规则如下:

  • 如果没有配置databaseIdProvider标签,那么databaseId=null

  • 如果配置了databaseIdProvider标签,使用标签配置的name去匹配数据库信息,匹配上设置databaseId=配置指定的值,否则依旧为null

  • 如果databaseId不为null,他只会找到配置databaseId的sql语句

  • MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库databaseId 属性的所有语句。如果同时找到带有 databaseId 和不带databaseId 的相同语句,则后者会被舍弃。

mappers 映射器

mapper:注册一个sql映射

注册配置文件

resource:引用类路径下的sql映射文件

url:用网路路径下的或者磁盘路径下的sql映射文件

注册接口

class:引应用接口

  • 接口映射文件,映射文件名必须和接口同名,并且放在同一个目录下

  • 没有sql映射文件,所有的sql利用注解写在接口上

注解写在接口上

推荐:比较重要和复杂额Dao接口写sql映射文件,不重要的简单的为了开发快速可以使用注解

MyBatis全局配置文件详解

package:批量注册

MyBatis全局配置文件详解

sql映射文件

namespace:名称空间;指定为接口的全类名

id:唯一标识

resultType:返回值类型

#{id}:从传递过来的参数中取出id值


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
   <select id="getEmpById" resultType="employee" >
       select * from tbl_employee where id = #{id}
   </select>
   <select id="getEmpById" resultType="employee" databaseId="mysql">
       select * from tbl_employee where id = #{id}
   </select>
   <select id="getEmpById" resultType="employee" databaseId="oracle">
       select * from tbl_employee where id = #{id}
   </select>
</mapper>

来源:https://blog.csdn.net/qq_45796208/article/details/110508432

标签:MyBatis,配置文件,详解
0
投稿

猜你喜欢

  • Spring bean为什么需要依赖注入

    2022-01-24 11:07:21
  • java中拼接字符串的5种方法效率对比

    2022-01-08 05:46:18
  • 深入理解Java中的接口

    2023-11-08 23:52:43
  • Java生产1-100的随机数简单实例(分享)

    2021-08-15 02:52:28
  • mybatis-plus生成mapper扩展文件的方法

    2023-08-10 07:29:05
  • Springboot 整合RabbitMq(用心看完这一篇就够了)

    2023-11-23 05:27:17
  • 教你如何编写简单的网络爬虫

    2023-06-01 08:58:30
  • 记一次springboot服务凌晨无故宕机问题的解决

    2023-07-25 04:50:23
  • SpringBoot整合dataworks的实现过程

    2023-11-29 12:13:09
  • java中驼峰与下划线的写法互转

    2023-09-21 09:47:36
  • java导出Excel通用方法实例

    2023-10-27 04:43:33
  • Java实现级联下拉结构的示例代码

    2023-11-03 18:22:06
  • Spring Bean自动装配入门到精通

    2023-11-03 07:29:09
  • maven环境变量配置讲解

    2023-11-29 12:35:51
  • SpringBoot上传文件大小受限问题的解决办法

    2023-04-19 09:46:16
  • mybatis-plus update更新操作的三种方式(小结)

    2023-10-08 14:05:08
  • java selenium使用浏览器调试工具实现方法

    2023-07-27 04:04:22
  • 详解SpringBoot注解读取配置文件的方式

    2023-08-05 02:51:16
  • MyBatis在SQL语句中如何获取list的大小

    2021-08-15 12:09:55
  • Hadoop+HBase+ZooKeeper分布式集群环境搭建步骤

    2022-02-13 01:16:33
  • asp之家 软件编程 m.aspxhome.com