侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

连接池配置

coydone
2022-03-08 / 0 评论 / 0 点赞 / 362 阅读 / 2,138 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

连接池技术

在Mybatis中它采用的是自己的连接池技术。在Mybatis的 SqlMapConfig.xml 配置文件中,通过来实现Mybatis中连接池的配置。

Mybatis将它自己的数据源分为三类:

  • UNPOOLED:不使用连接池的数据源

  • POOLED:使用连接池的数据源

  • JNDI:使用 JNDI 实现的数据源

相应地,MyBatis内部分别定义了实现了java.sql.DataSource接口的UnpooledDataSource,PooledDataSource类来表示UNPOOLED、POOLED类型的数据源。

在这三种数据源中,我们一般采用的是POOLED数据源(很多时候我们所说的数据源就是为了更好的管理数据库连接,也就是我们所说的连接池技术)。

数据源的配置

我们的数据源配置就是在 SqlMapConfig.xml 文件中,具体配置如下:

<!-- 配置数据源(连接池)信息 -->
<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>

MyBatis在初始化时,根据dataSource的type属性来创建相应类型的的数据源DataSource,即:

  • type=”POOLED”:MyBatis 会创建PooledDataSource实例。

  • type=”UNPOOLED” : MyBatis 会创建UnpooledDataSource实例。

  • type=”JNDI”:MyBatis 会从JNDI服务上查找DataSource实例,然后返回使用。

整合Druid

当我们配置MyBatis数据源时,只要配置了dataSource标签的type属性值为POOLED时,就可以使用MyBatis内置的连接池管理连接。

如果我们想要使用第三方的数据库连接池,则需进行自定义配置。

第三方的数据库连接池,常用的是Druid。Druid性能也比较好,提供了比较便捷的监控系统。Hikari性能最好。

1、pom文件添加依赖。

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.2.5</version>
</dependency>

2、创建Druid连接池工厂

public class DruidDataSourceFactory extends PooledDataSourceFactory {
	public DruidDataSourceFactory(){
		this.dataSource = new DruidDataSource();
	}
}

3、将DruidDataSourceFactory配置给Mybatis数据源。

<environments default= "mysql">
	<environment id="mysql">
		<transactionManager type="JDBC"></transactionManager>
		<!-- POOLED 使用MyBatis内置的连接池实现 -->
		<!-- mybatis需要一个连接池工厂,这个工厂可以产生数据库连接池 PooledDataSourceFactory -->
		<dataSource type="com.coydone.utils.DruidDataSourceFactory">
			<property name="driverClass" value="${driver}" />
			<property name=" jdbcUrl" value="${url}"/>
			<property name="username" value="S{username}" />
			<property name="password" value="$ipassword}" />
		</dataSource>
	</environment>
</environments>
0

评论区