04MyBatis核心配置文件

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><environments default=""><environment id="A"><transactionManager type="JDBC"/><dataSource type="UNPOOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/powernode"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment><environment id="B"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/powernode"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="CarMapper.xml"/><mapper resource="CarMapper2.xml"/></mappers>
</configuration>

● configuration:根标签,表示配置信息。
● environments:环境(多个),以“s”结尾表示复数,也就是说mybatis的环境可以配置多个数据源。
○ default属性:表示默认使用的是哪个环境,default后面填写的是environment的id。default的值只需要和environment的id值一致即可。
● environment:具体的环境配置(主要包括:事务管理器的配置 + 数据源的配置)
○ id:给当前环境一个唯一标识,该标识用在environments的default后面,用来指定默认环境的选择。
● transactionManager:配置事务管理器
○ type属性:指定事务管理器具体使用什么方式,可选值包括两个
■ JDBC:使用JDBC原生的事务管理机制。底层原理:事务开启conn.setAutoCommit(false); …处理业务…事务提交conn.commit();
■ MANAGED:交给其它容器来管理事务,比如WebLogic、JBOSS等。如果没有管理事务的容器,则没有事务。没有事务的含义:只要执行一条DML语句,则提交一次。
● dataSource:指定数据源,为程序提供数据连接对象
○ type属性:用来指定具体使用的数据库连接池的策略,可选值包括三个
■ UNPOOLED:每一次请求过来,都新建一个Connnection对象。采用传统的获取连接的方式,虽然也实现Javax.sql.DataSource接口,但是并没有使用池的思想。
● property可以是:
○ driver 这是 JDBC 驱动的 Java 类全限定名。
○ url 这是数据库的 JDBC URL 地址。
○ username 登录数据库的用户名。
○ password 登录数据库的密码。
○ defaultTransactionIsolationLevel 默认的连接事务隔离级别。
○ defaultNetworkTimeout 等待数据库操作完成的默认网络超时时间(单位:毫秒)
■ POOLED:使用MyBatis自己实现的连接池,采用传统的javax.sql.DataSource规范中的连接池。
● property除了UNPOOLED的全部属性外,还可以是(除了包含UNPOOLED中之外):
○ poolMaximumActiveConnections 在任意时间可存在的活动(正在使用)连接数量,默认值:10
○ poolMaximumIdleConnections 任意时间可能存在的空闲连接数。
○ 其它…
■ JNDI:采用第三方实现的数据库连接池,来获取DataSource对象。JNDI实际是一套规范,大部分Web容器都实现了JNDI规范,如Tomcat。不同的服务器所能拿到DataSource是不一样。仅用于Web/Maven的war工程。
● property可以是(最多只包含以下两个属性):
○ initial_context 这个属性用来在 InitialContext 中寻找上下文(即,initialContext.lookup(initial_context))这是个可选属性,如果忽略,那么将会直接从 InitialContext 中寻找 data_source 属性。
○ data_source 这是引用数据源实例位置的上下文路径。提供了 initial_context 配置时会在其返回的上下文中进行查找,没有提供时则直接在 InitialContext 中查找。
● mappers:在mappers标签中可以配置多个sql映射文件的路径。
● mapper:配置某个sql映射文件的路径
○ resource属性:使用相对于类路径的资源引用方式
○ url属性:使用完全限定资源定位符(URL)方式

1.dataSource

数据源=数据库连接池
dataSource指定数据源(就是指定使用哪个数据库连接池),为程序提供数据连接对象Connection,事实上,凡是为程序提供Connection对象的,都叫做数据源。
数据源其实是一套规范,由javax.sql.Datasource接口定义。
可以编写自己的数据源组件,只要实现了这个接口就行
也有常见的封装好的数据源(数据库连接池):Druid

2.type=“JNDI”解释

JNDI实际是一套规范,Tomcat实现了这个规范。将Druid数据库连接池配置到Tomcat上,将数据库连接池的上下文写到property的两个属性上,使得Tomcat服务器可以对外提供一个连接池的名字。

3.POOLED

POOLED即采用数据库连接池,优点是:

  • 提前创建好一定的连接对象sqlSession, 每次需要就拿,用完就还,避免了创建和销毁的开销

  • 因为每次只是拿,创建是提前进行的,因此连接对象sqlSession的数量是可控的,不至于拖垮内存。

<dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/powernode"/><property name="username" value="root"/><property name="password" value="root"/><!--最大连接数--><property name="poolMaximumActiveConnections" value="3"/><!--这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直失败且不打印日志),默认值:20000 毫秒(即 20 秒)。--><property name="poolTimeToWait" value="20000"/><!--强行回归池的时间--><property name="poolMaximumCheckoutTime" value="20000"/><!--最多空闲数量--><property name="poolMaximumIdleConnections" value="1"/></dataSource>

poolMaximumActiveConnections:最大的活动的连接数量。默认值10
poolMaximumIdleConnections:最大的空闲连接数量。默认值5
poolMaximumCheckoutTime:强行回归池的时间。默认值20秒。
poolTimeToWait:当无法获取到空闲连接时,每隔20秒打印一次日志,避免因代码配置有误,导致傻等。(时长是可以配置的)
当然,还有其他属性。对于连接池来说,以上几个属性比较重要。
最大的活动的连接数量就是连接池连接数量的上限。默认值10,如果有10个请求正在使用这10个连接,第11个请求只能等待空闲连接。
最大的空闲连接数量。默认值5,如何已经有了5个空闲连接,当第6个连接要空闲下来的时候,连接池会选择关闭该连接对象。来减少数据库的开销。
需要根据系统的并发情况,来合理调整连接池最大连接数以及最多空闲数量。充分发挥数据库连接池的性能。【可以根据实际情况进行测试,然后调整一个合理的数量。】

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

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

相关文章

服务发现Discovery

对于注册进eureka里面的微服务&#xff0c;可以通过服务发现来获得该服务的信息 1、 修改cloud-provider-payment8001的controller import com.my.springcloud.utils.RestResponse; import com.my.springcloud.entities.Payment; import com.my.springcloud.service.PaymentSe…

【深入学习Java虚拟机】

1.类的加载&#xff0c;连接&#xff08;验证、准备、解析&#xff09;与初始化。 类的加载指的是将类的 .class 文件中的耳机子数据读入到内存中&#xff0c;将其放在运行时数据去的方法区内&#xff0c;然后再兑取创建一个java.lang.Class 对象&#xff0c;用来封装类在方法…

K8S API访问控制之RBAC利用

前言 K8S对于API的访问安全提供了访问控制&#xff0c;主要为4个阶段&#xff0c;本文为第二个阶段——鉴权的RBAC。RBAC是基于角色的访问控制&#xff0c;使用kubeadm安装集群1.6版本以上的都默认开启了RBAC。本文主要研究集群可能存在的利用点及相对应的利用手法。 API访问…

【JAVA】final、finally、finalize 有什么区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 final&#xff1a; finally&#xff1a; finalize&#xff1a; 结语 我的其他博客 前言 在Java中&#xff0c;final、f…

【网络工程师】三层交换机与HSRP

一、三层交换机 1、三层交换机 三层路由器 二层交换机 2、三层路由引擎是可以关闭或开启的 conf t ip routing 开启三层路由功能 no ip routing 关闭 3、三层交换机的优点 与单臂路由相比&#xff1a; 1&#xff09;解决了网络瓶颈的问题 2&#xff09;解决了单点故障&a…

使用flet创建todo应用

使用 Flet 在 Python 中创建待办事项应用 Create To-Do app in Python with Flet 翻译官网教程https://flet.dev/docs/tutorials/python-todo&#xff0c;对一些地方进行了注释和修改。 安装flet Python版本需要3.8及以上&#xff0c;使用pip安装&#xff1a; pip install…

test fuzz-01-模糊测试(Fuzz Testing)入门 Atheris、Jazzer、jqf、kelinci、FLA、libfuzzer 对比

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试&#xff08;Fuzz Testing&#xff09; test fuzz-…

【MySQL】MySQL事务基础概述与隔离级别

MySQL事务基础概述与隔离级别 在数据库管理系统中&#xff0c;事务是一组原子性的操作&#xff0c;要么全部执行成功&#xff0c;要么全部失败。MySQL事务的四个基本特性&#xff0c;即ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;&#xff0c;对于数据的可靠…

代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数

哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰撞&#xff0c;以及常见哈希表的区别&#xff0c;数组&#xff0c;set 和map。 什么时候想到用哈希法&#xff0c;当我们遇到了要快速判断一个元素是否出现集合里的时…

Unity Urp 渲染管线 创建透明材质球

按照以上方式设置后就可以得到一个透明的材质球 Tips&#xff1a;Blending mode &#xff1a; alpha 和 Blending mode &#xff1a; additive都是完全透明效果具体差异暂时不知道

模型创建与nn.Module

一、网络模型创建步骤 二、nn.Module 下面描述了在 PyTorch 中常见的一些属性和功能&#xff0c;用于存储和管理神经网络模型的参数、模块、缓冲属性和钩子函数。 parameters&#xff1a;用于存储和管理 nn.Parameter 类的属性。nn.Parameter 是一种特殊的张量&#xff0c;它被…

在做题中学习(44):无重复字符的最长字串

3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;同向双指针————“滑动窗口” 思路&#xff1a;如下图&#xff0c;当right进窗口后&#xff0c;就出现了a重复&#xff0c;所以在left出窗口时时&#xff0c;需要跳到第一个a 后面的位置&…

【QML COOK】- 004-添加动画

1. 编辑main.qml import QtQuickWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")Image {id: backgroudanchors.fill: parentsource: "qrc:/Resources/Images/arrow.png"Behavior on rotation {NumberAnimation {duration: 1000}}}…

C语言-蓝桥杯算法提高VIP-产生数

题目描述 给出一个整数 n 和 k 个变换规则。 规则&#xff1a; 一位数可变换成另一个一位数&#xff1a; 规则的右部不能为零。 例如&#xff1a;n234。有规则&#xff08;k&#xff1d;2&#xff09;&#xff1a; 2&#xff0d;> 5 3&#xff0d;> 6 上面的整数…

Master01节点免密钥登录其他节点

1、执行命令 ssh-keygen -t rsa&#xff0c;一直敲回车 2、for i in k8s-master01 k8s-node01 k8s-node02;do ssh-copy-id -i .ssh/id_rsa.pub $i;done 输入yes和对应节点密码

【CSS】首个字符占用多行,并自定义样式

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>首字母大写</title><style&…

nohup - 后台执行

nohup : no hang up 语法 nohup Command [ Arg … ] [ & ]使用示例 nohup python a.py &日志将被保留在 当前文件夹下的 nohup.out 将日志放到文件&#xff0c;不输出到终端 echo hello > 1.txt在后台执行&#xff0c;并输出日志到 log1.txt 文件 nohup pytho…

【QT】计算器-模拟实现

目录 准本工作 槽函数实现 数字按键槽函数 退格槽函数 运算符 按键 槽函数 等号槽函数 初始化及计算器页面布局 整体代码 widget.h widget.cpp 准本工作 工程创建&#xff1a; 计算器模拟实现需求分析&#xff1a; 样式预览&#xff1a; &#x1f3a0;主要功能&…

uni-app如何生成骨架屏

骨架屏是页面的一个空白版本&#xff0c;通常会在页面完全渲染之前&#xff0c;通过一些灰色的区块大致勾勒出轮廓&#xff0c;待数据加载完成后&#xff0c;再替换成真实的内容。 参考效果 骨架屏作用是缓解用户等待时的焦虑情绪&#xff0c;属于用户体验优化方案。 生成骨…

【INTEL(ALTERA)】将 PHY Lite 用于并行接口Intel Agilex7 FPGA IP 时,为何无法对 PLL 进行实例化?

说明 由于英特尔 Quartus Prime Pro Edition 软件 23.1 版存在一个问题&#xff0c;在将 PHY Lite 用于并行接口Intel Agilex 7 FPGA IP 时&#xff0c;无法在顶部子组上对锁相环 &#xff08;PLL&#xff09; 进行实例化。 解决方法 要变通解决此问题&#xff0c;可以在底部…