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 数据库连接池内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • java后端如何实现防止接口重复提交

    java后端如何实现防止接口重复提交

    这篇文章主要介绍了java后端如何实现防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java 获取当前系统时间的三种方法

    Java 获取当前系统时间的三种方法

    这篇文章主要介绍了Java 获取当前系统时间的三种方法,帮助大家利用Java处理时间,感兴趣的朋友可以了解下
    2020-10-10
  • Java经典快排思想以及快排的改进讲解

    Java经典快排思想以及快排的改进讲解

    今天小编就为大家分享一篇关于Java经典快排思想以及快排的改进讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • IDEA打开项目不显示或者缺失项目文件目录的解决方案

    IDEA打开项目不显示或者缺失项目文件目录的解决方案

    这篇文章主要介绍了IDEA打开项目不显示或者缺失项目文件目录的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Spring jdbc具名参数使用方法详解

    Spring jdbc具名参数使用方法详解

    这篇文章主要介绍了Spring jdbc具名参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java选择结构与循环结构的使用详解

    Java选择结构与循环结构的使用详解

    循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环,选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程
    2022-03-03
  • Spring @Value注解失效问题解决方案

    Spring @Value注解失效问题解决方案

    这篇文章主要介绍了Spring @Value注解失效问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java ExecutorService使用方法详解

    java ExecutorService使用方法详解

    这篇文章主要为大家详细介绍了java ExecutorService使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • dubbo服务注册到nacos的过程剖析

    dubbo服务注册到nacos的过程剖析

    这篇文章主要为大家介绍了dubbo服务注册到nacos的过程剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职极限
    2022-02-02
  • SpringCloud注册中心之consul详细讲解使用方法

    SpringCloud注册中心之consul详细讲解使用方法

    Consul是一款由HashiCorp公司开源的,用于服务治理的软件,Spring Cloud Consul对其进行了封装,这篇文章主要介绍了springcloud组件consul服务治理,需要的朋友可以参考下
    2022-11-11

最新评论