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 configurationPUBLIC "-//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 configurationPUBLIC "-//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.常见的连接池有:阿里巴巴的德鲁伊连接池:druidc3p0dbcp...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 configurationPUBLIC "-//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 configurationPUBLIC "-//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.mzph.cn/news/688483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性回归-使用ClickHouse机器学习函数

本文字数&#xff1a;5923&#xff1b;估计阅读时间&#xff1a;15 分钟 作者&#xff1a;Ensemble 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 这原本是转发的ensemble analytics的文章。 【https://ensembleanalytics.io/blog/l…

devc++ 使用 winsock 实现 UDP 广播

参考链接 使用UDP发送广播报_udp广播 inaddr_broadcast-CSDN博客 UDP接收端收不到广播的消息问题排查_unity upd广播连接不上是什么情况-CSDN博客 如何禁用自己电脑的虚拟网卡-百度经验 (baidu.com) 但是wifi 会屏蔽255.255.255.255 广播地址&#xff0c;所以 255.255.255.2…

Java面试第一站:计算机网络基础知识

该系列会持续更新&#xff0c;关注我&#xff0c;第一时间获取我的最新动态哟 Java面试中&#xff0c;经常会问到跟计算机网络知识相关的考点&#xff0c;有的小伙伴不是很明白。考察网络知识有什么意义&#xff1f; 因为编程的时候&#xff0c;多数的情况下是不用我们来编写 …

力扣题目-177. 第N高的薪水

力扣题目-177. 第N高的薪水 仅作学习&#xff0c;不作他用 题干 表: Employee Column NameTypeidintsalaryint 在 SQL 中&#xff0c;id 是该表的主键。 该表的每一行都包含有关员工工资的信息。 查询 Employee 表中第 n 高的工资。如果没有第 n 个最高工资&#xff0c;查…

春节专题|产业7问:区块链厂商的现在和未来——数字资产厂商

2023转瞬即逝&#xff0c;不同于加密领域沉寂一整年后在年末集中爆发&#xff0c;对于我国的区块链厂商而言&#xff0c;稳中求胜才是关键词&#xff0c;在平稳发展的基调下&#xff0c;产业洗牌也悄无声息的到来。 从产业总体而言&#xff0c;在经过了接近3年的快速发展后&…

【鸿蒙手机】获取UDID,并添加签名认证

一、打开开发者模式 1、手机型号华为nova 10 pro , HarmonyOS版本 4.0&#xff0c;路径&#xff1a;设置-> 关于本机-> 多次连续点击”软件版本“ 这一行&#xff0c;一般是是5到7次&#xff08;我是点击了5次&#xff09;&#xff0c;第一次会弹出输入密码&#xff0c;验…

【C++】const与constexpr详解

1. constexpr&#xff1a;常量表达式 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这也意味着&#xff0c;常量表达式一旦确定&#xff0c;其值将无法修改。 实际开发中&#xff0c;我们经常会…

SPSSAU【文本分析】|文本情感

文本情感分析 文本分析模块中&#xff0c;SPSSAU共提供两种方式的情感分析&#xff0c;分别是按词情感分析和按行情感分析。按词情感分析是指针对提取的关键词进行情感分析&#xff0c;并且进行可视化展示&#xff1b;按行情感分析是指针对分析的原始数据以‘行’为单位进行情…

安装cockpit

1、下载cockpit yum -y install cockpit 下载相关环境 yum install qemu-kvm libvirt libvirt-daemon virt-install virt-manager libvirt-dbus 2、启动libvirtd systemctl start libvirtd.service systemctl enable libvirtd.service 3、设置开机自启动 systemctl enabl…

2022长安杯复现

案件情况 某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗&#xff0c;该网站号称使用“USTD 币”购买所谓的“HT 币”&#xff0c;受害人充 值后不但“HT 币”无法提现、交易&#xff0c;而且手机还被恶意软件锁定 勒索。警方根据受害人提供的虚拟币交易网站调取了对应…

【开源】JAVA+Vue.js实现农村物流配送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统登录、注册界面2.2 系统功能2.2.1 快递信息管理&#xff1a;2.2.2 位置信息管理&#xff1a;2.2.3 配送人员分配&#xff1a;2.2.4 路线规划&#xff1a;2.2.5 个人中心&#xff1a;2.2.6 退换快递处理&#xff1a;…

【c++】STL之stack和queue详解

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握stack和queue库&#xff0c;了解deque库 >…

N叉树的前序遍历

1.题目 这道题是2024-2-18的签到题&#xff0c;题目难度为简单。 考察的知识点为DFS算法&#xff08;树的前序遍历&#xff09;。 题目链接&#xff1a;N叉树的前序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历…

HGAME 2024 WEEK2 Crypto WP

前言 我很菜&#xff0c;有没做出来的题目&#xff0c;带*号题为复现。 midRSA 题目&#xff1a; from Crypto.Util.number import * from secret import flagdef padding(flag):return flagb\xff*(64-len(flag))flagpadding(flag) mbytes_to_long(flag) pgetPrime(512) qg…

[高并发] - 1. 高并发架构综述

1. 高并发概念 名称 概念其他QPSQueries Per Second 是每秒查询率TPSTransactions Per Second 也就是事务数/秒 用户通过client工具完成一个页面的一次访问&#xff0c;形成一个Tps&#xff1b;如果一次页面请求&#xff0c;产生多次对服务器的api请求&#xff0c;这个Tps 包含…

云服务器可以运用在哪些方面?

云服务器是一种基于云计算技术的虚拟化服务器&#xff0c;具有简单高效、安全可靠和可弹性伸缩的处理能力&#xff0c;可以根据企业的实际情况灵活的调整计算资源&#xff0c;可以根据用户的需求来进行扩展容量和缩减容量&#xff0c;能够帮助用户提高服务质量、提高整体效率与…

Anaconda虚拟环境管理:指令总结!

哈喽大家好&#xff0c;我是chowley&#xff0c;这次来记录一个经典问题——python虚拟环境咋配&#xff1f; 当我们需要在同一台机器上同时运行多个项目时&#xff0c;经常会遇到Python环境不兼容的问题。比如&#xff0c;一个项目需要Python 2.7&#xff0c;而另一个项目需要…

关于Spring Boot应用系统避免因为日切(日期切换)导致请求结果变更的一种解决方案

一、前言 在系统开发过程中&#xff0c;有些业务功能面临日切&#xff08;日期切换&#xff09;问题&#xff0c;比如结息跑批问题&#xff0c;在当前工作日临近24点的时候触发结息&#xff0c;实际交易时间我们预期的是当前时间&#xff0c;但是由于业务执行耗时&#xff0c;…

Spring任务调度@Scheduled的使用以及原理、源码分析

请直接看原文: 【小家Spring】Spring任务调度Scheduled的使用以及原理、源码分析&#xff08;EnableScheduling&#xff09;-腾讯云开发者社区-腾讯云 (tencent.com) ----------------------------------------------------------------------------------------------------…

Pulsar-架构与设计

Pulsar架构与设计 一、背景和起源二、框架概述1.设计特点2.框架适用场景 三、架构图1.Broker2.持久化存储&#xff08;Persistent storage&#xff09;3.Pulsar元数据&#xff08;Metadata store&#xff09; 四、功能特性1.消息顺序性2.消息回溯3.消息去重4.消息重投递5.消息重…