Mybatis 数据库连接池的实现示例

 更新时间:2023年10月13日 09:41:01   作者:语言-逆行者  
在Java应用程序中,与数据库的连接是非常昂贵的,因此,当我们使用MyBatis进行数据操作时,需要一个连接池来分配并管理这些连接,本文主要介绍了Mybatis 数据库连接池的实现示例,具有一定的参考价值,感兴趣的可以了解一下

1)数据库连接池定义

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。也就是,如果某个操作占用的连接超出了预定的时间,就会自动释放连接。

2)连接对象工作原理

【1】无连接池

  • [1]每次执行某个操作的时候,需要手动建立一个连接对象。
  • [2]再使用连接对象去访问数据库执行相关的操作。
  • [3]当应用程序不再需要这个连接时,它会关闭连接。
  • [4]如果应用程序需要再次连接数据库,它会重新创建一个新的数据库连接。

【2】有连接池

  • [1]初始化连接池。在系统启动时,连接池会生成一定数量的数据库连接,并将这些连接放入池中。
  • [2]获取连接。当应用程序需要与数据库进行交互时,它会从连接池中获取一个可用的连接。
  • [3]使用连接。应用程序使用连接进行数据库操作。
  • [4]释放连接。当应用程序完成数据库操作后,它会将连接返回给连接池,而不是将连接关闭。这样可以避免频繁地创建和销毁连接,提高系统性能。
  • [5]销毁连接。如果连接池中的连接长时间未被使用,连接池会将这些连接销毁,以释放系统资源。

3)标准接口DataSource

  • 官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。
  • 它定义了访问数据库的标准方法。这些方法包括从数据库中检索数据并将其返回到Java应用程序,以及将数据写回到数据库中的能力。

DataSource接口提供以下方法:

方法描述
getConnection()获取一个数据库连接
getConnection(String username, String password)获取一个带有用户名和密码的数据库连接。
getLoginTimeout()获取登录超时时间。
setLoginTimeout(int seconds)设置登录超时时间。
getLogWriter()获取一个PrintWriter,用于将日志消息写入。
setLogWriter(PrintWriter out)设置一个PrintWriter,用于将日志消息写入。
unwrap(Class iface)将DataSource转换为指定接口的实现对象。
isWrapperFor(Class<?> iface)判断是否DataSource实现了指定接口。
getLoginTimeout()获取登录超时时间。
setLoginTimeout(int seconds)设置登录超时时间。
getLogWriter()获取一个PrintWriter,用于将日志消息写入。
setLogWriter(PrintWriter out)设置一个PrintWriter,用于将日志消息写入。
unwrap(Class iface)将DataSource转换为指定接口的实现对象。
isWrapperFor(Class<?> iface)判断是否DataSource实现了指定接口。

4)常用的数据库连接池

C3PO、 DBCP、Druid(德鲁伊)、HIkari(追光者),主要介绍常用的最后两个。

【1】 Druid(德鲁伊)

  • 阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是java语言最好的数据库连接池之一

【2】 Hikari(追光者)

SpringBoot默认自带的连接池

运行SpringBoot项目的一个测试例子,可以得知是默认使用Hikari连接池。

5)如何切换连接池?

pom.xml文件配置

在pom.xml配置文件中引入德鲁伊的起步依赖

依赖坐标如下:

<!--引入德鲁伊的起步依赖-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.2.8</version>
		</dependency>

刷新后还是不行的需要去application配置文件声明一下type。在application.properties文件中加上type的配置信息:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

测试切换成功

到此这篇关于Mybatis 数据库连接池的实现示例的文章就介绍到这了,更多相关Mybatis 数据库连接池内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • MyBatis输入映射和输出映射实例详解

    MyBatis输入映射和输出映射实例详解

    mapper.xml是我们配置操作数据库的sql语句的地方.这篇文章主要介绍了MyBatis输入映射和输出映射实例详解,需要的朋友可以参考下
    2017-02-02
  • SpringDataJpa多表操作的实现

    SpringDataJpa多表操作的实现

    开发过程中会有很多多表的操作,他们之间有着各种关系,本文主要介绍了SpringDataJpa多表操作的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java9中对集合类扩展的of方法解析

    Java9中对集合类扩展的of方法解析

    这篇文章主要介绍了Java9 中对集合类扩展的of方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java统计文件中每个字符出现的个数

    java统计文件中每个字符出现的个数

    这篇文章主要为大家详细介绍了java统计文件中每个字符出现的个数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Spark SQL 编程初级实践详解

    Spark SQL 编程初级实践详解

    这篇文章主要为大家介绍了Spark SQL 编程初级实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java创建删除文件和目录的方法(推荐)

    Java创建删除文件和目录的方法(推荐)

    这篇文章主要介绍了java创建删除文件和目录的方法,创建和删除文件目录常用的是file类的方法,具体内容详情大家参考下本文
    2018-05-05
  • Java解决xss转义导致转码的问题

    Java解决xss转义导致转码的问题

    跨站脚本攻击XSS是最普遍的Web应用安全漏洞,本文主要介绍了Java解决xss转义导致转码的问题,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 基于JVM 调优的技巧总结分析

    基于JVM 调优的技巧总结分析

    本篇文章是对JVM 调优的技巧进行了总结和分析。需要的朋友参考下
    2013-05-05
  • 使用Java实现一个能保留计算过程的计算器

    使用Java实现一个能保留计算过程的计算器

    计算器是我们日常生活中常用的工具之一,它能够进行基本的数学运算,如加法、减法、乘法和除法,而在设计一个计算器时,我们可以通过使用Java编程语言来实现一个简单的控制台计算器,并且让它能够保留计算过程,文中有详细的代码示例,需要的朋友可以参考下
    2023-11-11
  • maven的三种工程pom、jar、war的区别

    maven的三种工程pom、jar、war的区别

    这篇文章主要介绍了maven的三种工程pom、jar、war的区别,详细的介绍pom、jar、war和区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11

最新评论