MyBatis核心配置文件详解

MyBatis核心配置文件详解

  • 一、Environments标签
    • 1.Environment标签详解
      • (1)如何创建对应环境的 SqlSessionFactory对象
    • 2.transactionManager标签详解
    • 3.dataSource标签详解
      • (1)UNPOOLED
      • (2)POOLED
      • (3)JDNI
  • 二、properties标签
    • 1.property标签
    • 2.properties 属性配置文件
      • (1)xxx.properties属性配置文件
      • (2)mybatis-config.xml 配置文件
      • (3)配置文件的优先级


一、Environments标签

1.Environment标签详解

<?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 说明该 XML 文件的根,xxx.dtd 文件是 XML 对应的规范,用来说明该 XML 文件可以使用那些标签 -->

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>  <!-- 日志设置为 MyBatis 提供的标准日志 -->
    </settings>

    <!-- default 表示默认使用的环境 -->
    <!-- 默认环境是什么?当使用 mybatis 创建 SqlSessionFactory 对象的时候,没有指定环境的话,默认使用那个环境 -->
    <environments default="development">

        <!-- 一般一个数据库会对应一个SqlSessionFactory对象。-->
        <!-- 一个环境 environment 会对应一个 SqlSessionFactory 对象-->
        <environment id="development">
            <transactionManager type="JDBC"/>   <!-- 事务管理设置为 JDBC 默认开启事务,需要手动提交 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/使用的数据库名"/>
                <property name="username" value="用户名"/>
                <property name="password" value="用户名对应的密码"/>
            </dataSource>
        </environment>

        <!-- 这是mybatis的另一个环境,也就是链接的数据库是另一个数据库mybatis-->
        <environment id="test">
            <transactionManager type="JDBC"/>   <!-- 事务管理设置为 JDBC 默认开启事务,需要手动提交 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/使用的数据库名"/>
                <property name="username" value="用户名"/>
                <property name="password" value="用户名对应的密码"/>
            </dataSource>
        </environment>

    </environments>

    <mappers>
        <!--sql映射⽂件创建好之后,需要将该⽂件路径配置到这⾥-->
        <mapper resource="articleMapper.xml"/>
    </mappers>

</configuration>

(1)如何创建对应环境的 SqlSessionFactory对象

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

//这种方式创建的是默认环境的sqlSessionFactory
SqlSessionFactory sqlSessionFactory1 = builder.build(Resources.getResourceAsStream("mybatis-config.xml"));

//这种方式创建的是指定环境的sqlSessionFactory
SqlSessionFactory sqlSessionFactory2 = builder.build(Resources.getResourceAsStream("mybatis-config.xml"), "test");

2.transactionManager标签详解

  • 这个标签是用来配置事务管理器的,用来指定具体采用什么方式来管理事务的。
  • 关于这个标签的详细知识可以参考我的博客 ===> MyBatis概述与MyBatis入门程序 中的 MyBatis事务管理深度剖析部分。

3.dataSource标签详解

<?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 说明该 XML 文件的根,xxx.dtd 文件是 XML 对应的规范,用来说明该 XML 文件可以使用那些标签 -->

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>  <!-- 日志设置为 MyBatis 提供的标准日志 -->
    </settings>

    <!-- default 表示默认使用的环境 -->
    <!-- 默认环境是什么?当使用 mybatis 创建 SqlSessionFactory 对象的时候,没有指定环境的话,默认使用那个环境 -->
    <environments default="development">

        <!-- 一般一个数据库会对应一个SqlSessionFactory对象。-->
        <!-- 一个环境 environment 会对应一个 SqlSessionFactory 对象-->
        <environment id="development">
            <transactionManager type="JDBC"/>   <!-- 事务管理设置为 JDBC 默认开启事务,需要手动提交 -->

            <!--
                1.dataSource 被称为数据源
                2.dataSource 的作用是:为程序提供 Connection 对象。(但凡是给程序提供 Connection 对象的,都叫做数据源)
                3.数据源实际上是一套规范。JDK 中有这套规范:javax.sql.DataSource(这个数据源的规范,这套接口实际上是 JDK 规定的)
                4.我们自己也可以编写数据源组件,只要实现 Javax.sql.DataSource 接口就行了。实现接口当中的所有方法。这样就有了自己的数据怨怒。(数据库连接池是提供连接对象的,所有数据库连接池就是一个数据源)
                5.常见的连接池有:
                    阿里巴巴的德鲁伊连接池:druid
                    c3p0
                    dbcp
                    ...
                   6.type 属性用来指定数据源的类型,就是指定具体使用什么方式来获取 Connection 对象。
                        type 属性有三个值,必须是三选一
                        type= "[UNPOOLED | POOLED | JNDI]"
                        UNPOOLED: 不使用数据库连接池技术。每一次请求过来之后,都是创建新的 Connection 对象。
                        POOLED: 使用 mybatis 自己实现的数据库连接池。
                        JNDI: 集成第三方的数据库连接池。

                        JNDI 是一套规范。大部分 Web 容器都实现了 JNDI 规范。
                            例如:Tomcat、Jetty、WebLogic、WebSphere.
                            JNDI:是Java命名目录接口。
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/springboot-blog"/>
                <property name="username" value="root"/>
                <property name="password" value="GDB20031104!"/>
            </dataSource>
        </environment>

        <!-- 这是mybatis的另一个环境,也就是链接的数据库是另一个数据库mybatis-->
        <environment id="test">
            <transactionManager type="JDBC"/>   <!-- 事务管理设置为 JDBC 默认开启事务,需要手动提交 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/springboot-blog"/>
                <property name="username" value="root"/>
                <property name="password" value="GDB20031104!"/>
            </dataSource>
        </environment>

    </environments>

    <mappers>
        <!--sql映射⽂件创建好之后,需要将该⽂件路径配置到这⾥-->
        <mapper resource="articleMapper.xml"/>
    </mappers>

</configuration>
  • 注意:关于 type 属性的值不同,则每个属性可以使用的子标签不同,大家可以参考官方文档。 ===> mybatis中文网

(1)UNPOOLED

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c78c6baf0282463f82fdb0528e083720.png

(2)POOLED

  • 提醒:正常使用连接池的话,池中有很多参数是需要设置的。设置好参数,可以让连接池发挥的更好。事半功倍的效果。
  • 具体连接池当中的参数如何配置呢?需要反复的根据当前业务情况进行测试。
    在这里插入图片描述

(3)JDNI

在这里插入图片描述
在这里插入图片描述


二、properties标签

  • 这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。

1.property标签

<?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>
        <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/springboot-blog"/>
    </properties>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="root"/>
                <property name="password" value="GDB20031104!"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--sql映射⽂件创建好之后,需要将该⽂件路径配置到这⾥-->
        <mapper resource="articleMapper.xml"/>
    </mappers>
</configuration>

2.properties 属性配置文件

(1)xxx.properties属性配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot-blog
jdbc.username=root
jdbc.password=GDB20031104!

(2)mybatis-config.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="jdbc.properties">  // 从根路径下引入属性配置文件
    </properties>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>
    <mappers>
        <mapper resource="articleMapper.xml"/>
    </mappers>
</configuration>

(3)配置文件的优先级

  • 如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
    • 首先读取在 properties 元素体内指定的属性。
    • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
    • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
  • 因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。
  • 其中的 url 属性是使用绝对路径的方式来获取属性配置文件的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/394018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MCU电源控制(PWR)与低功耗

目录 一、STM32 的内核和外设电源系统管理&#xff1a; 二、MCU电源监控&#xff1a; 三、三种低功耗模式&#xff1a; 1、睡眠模式&#xff1a; 2、停止模式&#xff1a; 3、待机模式&#xff1a; 一、STM32 的内核和外设电源系统管理&#xff1a; ① 电池备份区域&#…

NumPy模块完结篇:深入探讨和高效利用【第85篇—NumPy模块】

NumPy模块完结篇&#xff1a;深入探讨和高效利用 NumPy是Python中用于科学计算的核心库之一&#xff0c;提供了高性能的多维数组对象&#xff08;numpy.ndarray&#xff09;以及许多用于操作这些数组的函数。在前面的几篇博客中&#xff0c;我们介绍了NumPy的基础知识、数组操…

【Linux】进程地址空间的理解

进程地址空间的理解 一&#xff0c;什么是程序地址空间二&#xff0c;页表和虚拟地址空间三&#xff0c;为什么要有进程地址空间 一&#xff0c;什么是程序地址空间 在我们写程序时&#xff0c;都会有这样下面的内存结构&#xff0c;来存放变量和代码等数据。 一个进程要执行…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

【激光SLAM】激光的前端配准算法

文章目录 ICP匹配方法&#xff08;Point to Point&#xff09;PL-ICP匹配方法&#xff08;Point to Line&#xff09;基于优化的匹配方法&#xff08;Optimization-based Method&#xff09;优化方法的求解地图双线性插值拉格朗日插值法——一维线性插值 相关方法&#xff08;C…

JAVA——高并发核心知识点

1、重要概念 现在&#xff0c;并行计算显然已经成为一门正式的学科。也许很多人&#xff08;包括Linus在内&#xff09;都觉得并行计算或者说并行算法是多么的奇葩。但现在我们也不得不承认&#xff0c;在某些领域&#xff0c;这些算法还是有用武之地的。既然说服务端编程还是…

dm_control 翻译: Software and Tasks for Continuous Control

dm_control: Software and Tasks for Continuous Control dm_control&#xff1a;连续控制软件及任务集 文章目录 dm_control: Software and Tasks for Continuous Controldm_control&#xff1a;连续控制软件及任务集Abstract1 Introduction1 引言1.1 Software for research1…

ClickHouse从入门到精通(高级)

第1章 Explain查看执行计划 第2章 建表优化 第3章 ClickHouse语法优化规则 第4章 查询优化 第5章 数据一致性(重点) 第6章 物化视图 第7章 MaterializeMySQL引擎 第8章 常见问题排查

用Boule绘制地球重力场

文章目录 参考椭球标准重力重力地图 参考椭球 boule中定义了多种参考椭球&#xff0c;可用于表示地球、火星等星体的重力分布。可通过pip安装 pip install boule安装完成后可直接调用 import boule as blboule中已经定义的椭球如下 椭球星体GRS80地球WGS84地球MARS火星MERC…

树和二叉树的基本知识

一、树的概念及结构 1.树的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 。 有一个 特殊…

Linux第61步_“buildroot”构建根文件系统第3步_烧写根文件系统到EMMC中_并完善开发板配置

烧录到EMMC测试&#xff0c;还需进一步测试和配置。 1、删除rootfs”目录下的“rootfs.tar”压缩包 打开第1个终端 输入“ls回车” 输入“cd linux/回车”&#xff0c;切换到“linux”目录 输入“ls回车”&#xff0c;列出“linux”目录下的文件和文件夹 输入“cd nfs/回…

杨辉三角的变形(数学)

题目 import java.util.Scanner;public class Main {public static void main(String[] args) { // 1 // 1 1 1 // 1 2 3 2 1 // 1 3 6 7 6 3 1 // 1 4 10 16 19 16 10 4 1Scanner sc new Scanner(System.in);int n sc.nextInt();int[][] res new int[n1][2*n];for(i…

FPGA之移位寄存器

SLICEM中的LUT可以配置为32位移位寄存器,而无需使用slice中可用的触发器。以这种方式使用,每个LUT 可以将串 行数据延迟 1 到 32 个时钟周期。移入D &#xff08;DI1 LUT 引脚&#xff09;和移出 Q31&#xff08;MC31 LUT 引脚&#xff09;线路将LUT级联&#xff0c;以形成更大…

Python:常见的运算符

一、算术运算符 算术在数学中可以直接运用的一些运算规则&#xff1a; ------- 加法运算 - ------- 减法运算 * ------- 乘法运算 / ------- 除法运算 强数据类型语言中/表示的整除运算 // ------ 整除 % ------ 取余运算 ** ------ 幂次方运算 >>> a 10 >>&…

GDB调试指南

1. 启动gdb gdb [program名] # 比如gdb main gdb [program名] core # 用于调试coredump的错误&#xff0c;需加上生成的core文件路径 gdb -p [pid] # 按进程号调试 2. 调试运行中的程序 当正在运行的程序出现故障&#xff0c;比如服务器程序&#xff0c;无法终止&#xff0c;…

Vite 构建流程大揭秘:快速构建前端项目的秘密武器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

物奇平台DRC动态范围控制修改方法

物奇平台DRC动态范围控制修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 音频 DRC 是指动态范围控制(Dyna

Android系统app开发

Android系统app开发 系统app阔以使用很多系统源码中隐藏的api 首先先编译出jar包 整编源码后&#xff0c;在这个目录下&#xff0c;这个就是包含系统源码隐藏api的jar包 系统app的标志 拷贝jar文件到app模块下 在编译之前把这个jar添加到classpath路径里面去&#xff0c;这样…

基于python的遥感影像灰色关联矩阵纹理特征计算

遥感影像纹理特征是描述影像中像素间空间关系的统计特征&#xff0c;常用于地物分类、目标识别和变化检测等遥感应用中。常见的纹理特征计算方式包括灰度共生矩阵&#xff08;GLCM&#xff09;、灰度差异矩阵&#xff08;GLDM&#xff09;、灰度不均匀性矩阵&#xff08;GLRLM&…

软件架构与系统架构:区别与联系的分析

软件架构与系统架构&#xff1a;区别与联系的分析 在信息技术领域&#xff0c;软件架构和系统架构这两个术语经常被提及。尽管它们在某些方面有重叠&#xff0c;但它们确实代表了不同的概念和聚焦点。理解这两种架构之间的区别和联系对于任何从事技术开发和设计的专业人士都是至…