mybatis学习笔记之核心配置文件详解

文章目录

  • 核心配置文件内容
  • 多环境
  • 事务管理器
  • 对数据源的剖析
    • JNDI
    • POOLED和UNPOOLED的区别
    • 配置具体的数据库连接池参数
  • properties
    • properties和mapper标签的url属性

核心配置文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><--- 这是个dtd文件是个约束,约束根标签里能写什么,子标签有哪些,孙子标签里又能有哪些,标签里面又能有哪些属性,属性里面又能有那些值---><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/demo"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="CarMapper.xml"/></mappers>
</configuration>

多环境

<environments></environments>表示的是里面能配置多个环境
<environment> </environment>表示其中的一个环境

而如上的核心配置文件中的那个唯一环境表示的是连接的数据库是demo,可以后面再配置一个文件去连接另一个数据库。(一个环境对应一个数据库,而一个数据库对应一个SqlSessionFactory对象,即一个环境对应一个SqlSessionFactory对象)

而后面的default表示默认使用的环境


默认环境又是啥?

就是当你使用mybatis创建SqlSessionFactry对象的时候,没有指定的环境的话,默认使用哪个环境
创建SqlSessionFactory有两种方式,一种是直接用创建好的SqlSessionBuilder对象,sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));创建

还有一种build方法就是在上述build方法后面参数加一个指定的environment属性值,这样就是可以指定用的environment而不是用default里面的默认环境

事务管理器

看完了坏境的“外围”配置,接下来就是环境里面的“东西”了


transactionManager标签

  1. 作用:配置事务管理器。指定mybatis具体使用什么方式去管理事务。
  2. type属性有两个值:
  • 第一个:JDBC:主要使用原生的JDBC代码来管理事务。
conn.setAutoCommit(false)
....
conn.commite();
  • 第二个:MANAGED:mybatis不再负责事务的管理,将事务管理交给其他的JEE(JavaEE)容器来管理。例如spring
  1. 大小写无所谓,不区分大小写,但是不能写其他值,只能是二选一。(jdbc和managed)
  2. 在mybatis中提供了一个事务管理器接口:Transaction
    该接口下有两个实现类:jdbcTransaction和ManagedTransaction
    如果type=“JDBC”,那么底层会实例化JdbcTransaction对象。
    如果type=“MANAGED”,那么底层会实例化ManagedTransaction

对数据源的剖析

dataSource配置

  1. dataSource被称为数据源。
  2. dataSource作用是什么?为程序提供Connection对象(但凡是给程序提供Connection对象的,都叫做数据源。)
  3. 数据源实际上是一套规范,JDK中有这套规范:javax.sql.DataSource(这个数据源的规范,这套接口实际上是JDK规定的)
  4. 我们自己也可以编写数据源,只要实现javax.sql.DataSource接口就行了。实现接口当中所有的方法,这样就有了自己的数据源

比如你可以写一个自己的数据库连接池(数据库连接池是提供连接对象的,所有数据库连接池就是一个数据源)

  1. 常见的数据源组件有哪些呢?(常见的数据库连接池有哪些呢)
  • 阿里巴巴的德鲁伊连接池:druid、c3p0、dbcp
  1. type属性用来指定数据源的类型,就是指定具体使用什么方式来获取Connection对象,type属性有三个值:必须是三选一(UNPOOLED|POOLED|JNDI)
  • UNPOOLED:不适用数据库连接池技术。每一次请求过来之后,都是创建新的Connection对象。
  • POOLED:使用mybatis自己实现的数据库连接池
  • JNDI:集成其他第三方的数据库连接池。

JNDI

JNDI是一套规范,谁实现了这套规范呢?大部分的web容器(Tomcat、Jetty、WebLogic、WebSphere)都实现了JNDI规范

JNDI是java命名目录接口(Tomcat实现了这个规范)

这个数据源实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个NDI上下文的数据源引用。并且这种数据源配置只需要两个属性。

POOLED和UNPOOLED的区别

连接池优点:

  1. 每一次获取连接都从池中拿,效率高
  2. 因为每一次只能从池中拿,所以连接对象的创建数量是可控的。

配置具体的数据库连接池参数

正常使用连接池的话,池中有很多参数是需要设置的,可以让连接池发挥的更好,事半功倍的效果。
具体连接池当中的参数如何配置呢?需要反复的更具当前业务情况进行测试


poolMaximumActiveConnections:连接池当中最多的正在使用的连接对象的数量上限,最多有多少个连接可以活动,默认值10


poolTimeToWait:每隔多少时间打印日志,并且尝试获取连接对象,后面value值设置时间(单位毫秒)


poolMaximumCheckoutTime:强行让某个连接空闲,超时时间设置。后面value值设置时间(单位毫秒)


poolMaximumIdleConnections:设置最多的空闲数量

properties

是一个可以在根标签中可以加入的子标签

在properties中可以配置很多属性
把一些必须的属性值放在里面设置,后面调用它的属性名就行,方便后续的更改
也可以把必须的属性值单独拉到根路径下去配置,再利用这个标签将值都get到

properties和mapper标签的url属性

和之前学的差不多,就是要多加一个file:///

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

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

相关文章

【广州华锐互动】VR地铁消防逃生路线演练系统

随着城市轨道交通的不断发展&#xff0c;事故应急演练的重要性也越来越受到重视。而VR技术的应用&#xff0c;为地铁消防逃生路线演练带来了许多亮点&#xff0c;包括以下几个方面&#xff1a; 首先&#xff0c;VR技术可以提供高度真实的模拟场景。在传统的事故应急演练中&…

常见的计算机网络协议

1 协议分类 1.1 网络层协议 IP 、 ICMP、IGMP、IS-IS、IPsec、 ARP、 RARP、RIP、VRRP等 1.2 传输层协议 TCP、 UDP、TLS、SSL、OSPF 等 1.3 应用层协议 DHCP 、DNS 、FTP、 HTTP、POP3、 SNMP 、SSH 、TELNET 、 BGP 、GLBP、HSRP等 2 协议详解 2.1 IP协议 IP指网际互…

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化 1.监听dom元素的宽高变化 你可以使用Vue的指令v-on和v-bind来动态监听div的宽度。 首先&#xff0c;在Vue实例中声明一个data属性&#xff0c;用来存储div的宽度值。例如&#xff1a; data() {return {divWidth…

ipad可以使用其他品牌的手写笔吗?平价ipad手写笔推荐

我是一个拥有多年数码经验的爱好者&#xff0c;我知道一些关于电容笔的知识。我认为&#xff0c;苹果原装的电容笔与普通的电容笔最大的不同之处&#xff0c;就是其所带来的压感不同。由于“重力压感”的特殊性&#xff0c;我们能很快地把色彩填充到画面中。除此之外&#xff0…

亿发软件:数字化大中型制造企业生产管理应用,实现智慧工厂信息化

随着信息技术与制造业的深度协调&#xff0c;作为企业发展的趋势&#xff0c;大中型制造企业需要拥抱信息化建设。通过运用信息技术和数字化运营&#xff0c;大中型制造企业的生产、设计、经营、管理、后续服务等都实现自动化、智能化。大中型制造企业信息化建设解决方案&#…

uniapp中axios封装和环境配置

axios版本 最好锁定版本&#xff0c;避免bug axios-miniprogram-adapter这个依赖主要是适配小程序网络请求的适配器&#xff0c;为了解决uniapp 适配axios请求&#xff0c;避免报adapter is not a function错误 cnpm i axios0.26.0 axios-miniprogram-adapter 配置adapter函…

Cadence PCB 仿真Model Integrity专题

&#x1f3e1;《总目录》   &#x1f3e1;《宝典目录》 目录 1&#xff0c;内容概述2&#xff0c;内容目录 1&#xff0c;内容概述 本专题详细介绍Cadence的仿真建模工具 Model Integrity。 2&#xff0c;内容目录 Cadence PCB仿真 Model Integrity 功能详述与启动方法图文教…

bean的生命周期

生命周期&#xff1a;从生到死的过程。那么对于bean来说就是从创建到销毁的过程。 普通的Java对象的创建由我们new创建&#xff0c;然后在不用的时候&#xff0c;java回收机制会自动回收。那么bean呢&#xff1f; bean是spring中的对象&#xff0c;和普通对象不一样的就是bea…

基于Python+ResNet50算法实现一个图像识别系统案

题解 | #完全平方数的草料# class Solution {public: /** * 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可 * 新东方南昌学校招聘编程竞赛教练 工作职责&#xff1a;1、教学工作&#xff1a;为学员提供编程Python&#xf…

springboot-防止sql注入,xss攻击,cros恶意访问

1.sql注入 sql注入: 把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令 解决方法&#xff1a; 1)无论是直接使用数据库还是使用如mybatis组件&#xff0c;使用sql的预编译&#xff0c;不要用拼接字符串。 2)后…

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88050234

蒲公英打包环境搭建碰到问题

一&#xff1a;证书那边选择手动&#xff0c;不要自动&#xff0c;——》debug配置dev证书&#xff0c;release配置ad-hoc证书 二&#xff1a;证书有时候不生效&#xff0c;删除重新下载。~/Library/MobileDevice/Provisioning Profiles 三&#xff1a;更新测试手机时&#…

Mysql索引与事务

目录 一、索引 1、概念 2、作用 3、副作用 二、事务 1、概念 2、ACID特点 原子性 一致性 隔离性 持久性 一、索引 1、概念 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针…

OpenCv色彩空间

目录 一、RGB 二、图像处理入门 三、色彩空间的转换 一、RGB 在表示图像时&#xff0c;有多种不同的颜色模型&#xff0c;但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型&#xff0c;其中原色 (在RGB模型中&#xff0c;原色是红色 R、绿色 G 和蓝色 B)混合在…

设计模式之享元模式

写在前面 本文看下一种结构型设计模式&#xff0c;享元模式。 1&#xff1a;介绍 1.1&#xff1a;什么时候使用享元模式 当程序需要大量的重复对象&#xff0c;并且这些大量的重复对象只有部分属性不相同&#xff0c;其他都是相同的时候&#xff0c;就可以考虑使用享元设计…

PMP-项目风险管理学习要点

文章目录 前言PMP-项目风险管理学习要点1. 风险的含义2. 风险敞口3. 单个项目风险 VS 整个项目风险4. 变异性风险5. 模糊性风险6. 项目风险的分类6.1. 已知风险与未知风险6.2. 内部风险与外部风险6.3. 商业风险与可保险风险7. 影响相关方的风险态度的因素8. 识别风险的几种方式…

【天工Godwork精品教程】天工3.1.7安装教程(附Godwork完整版下载地址)

本文讲解天工3.1.7安装过程(附Godwork完整版网盘下载地址)。 文章目录 一、天工3.1.7安装教程1. 安装GodWork-AT 3.1.72. 安装GodWork-AT 3.1.7补丁3. 安装GodWork-EOS-Setup-2017B-12314. 安装GodWork-EOS补丁5. 运行godwokr软件6. 生成ZC码7. 输入ZC码8. eos插件调用二、天…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…

LINUX 查看机器配置

查看磁盘类型&#xff1a;lsblk -d -o name,rota 查看磁盘大小&#xff1a;lsblk -r| grep dis 查看磁盘详情&#xff1a;df -h 查看每个物理CPU内核个数&#xff1a;cat /proc/cpuinfo | grep process | sort | uniq | wc -l 查看cpu个数&#xff1a;cat /proc/cpuinfo | grep…

Vue中的侦听器:数据变化的秘密揭示

一、侦听器&#xff1a;vue中想监听数据的变化 &#x1f680;&#xff08;一&#xff09;侦听器watch 如何侦听到某个变量值改变呢&#xff1f;使用watch配置项&#x1f6a7;&#x1f6a7;&#x1f6a7;watch&#xff1a;可以侦听到data/computed属性值的改变。语法&#xff…