MyBatis——05数据库连接池

本文介绍如何在Tomcat中配置JDBC数据库连接池,包括设置连接池属性、状态管理和连接对象的使用。通过在web项目META-INF目录下的context.xml文件中编写数据库连接池相关属性,可以有效提升数据库访问效率。

定义

在内存中开辟一块空间,存放多个数据库连接对象

JDBCTomcatPool

直接由 tomcat 产生数据库连接池
具体如下:
在一块内存空间中,去存放多个连接对象,每个对象都有不同的状态。
active 状态:当前连接对象被应用程序使用中
Idle 空闲状态:等待应用程序使用

使用数据库连接池的目的

  1. 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率
  2. 小型项目不适用数据库连接池

实现 JDBCtomcatPool 的步骤

  1. 在 web 项目的 META-INF 中存放 context.xml,在 context.xml 编写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?>
<Context>

	<Resource
		
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/sum"
		username="root"
		password="root"
		
		maxActive="50"
		maxIdle="20"

		name="test"

		auth="Container"

		maxWait="10000"

		type="javax.sql.DataSource"
	/>
</Context>

因xml中在<>加注释不方便,所以我用HTML的注释形式重写了一边(不能运行)

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<!-- 生成资源对象 -->
	<Resource
		<!-- JDBC -->
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/sum"
		username="root"
		password="root"
		<!--对象状态
		max用来控制上限--> 
		maxActive="50"
		maxIdle="20"
		<!-- 起个名字调用 -->
		name="test"
		<!-- 由Tomcat管理-->
		auth="Container"
		<!-- 最大超时时间10s -->
		maxWait="10000"
		<!--通过name属性取的数据库连接池对象时,
		在java中的类型,用javax.sql.DataSource
		数据源相当于数据库连接池-->
		type="javax.sql.DataSource"
	/>
</Context>
  1. 把项目发布到 tomcat 中,数据库连接池就会产生

注:可以在 java 中使用 jndi 获取数据库连接池中对象

  1. Context是上下文接口,接口对象要获取context.xml 文件对象类型
  2. 代码为:
//Context接口是专门用来获取context.xml对象
			//接口不能实例化,需要加入包——初始化
			Context cxt = new InitialContext();
			//	java:comp/env是固定的(完整环境)
			// 	返回的是object对象,需要进行强转DataSource——获取数据库连接池对象
			DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");
			//JDBC
			Connection conn = ds.getConnection();
  1. 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改变成 Idle
### 配置 MyBatis 连接 ClickHouse 数据库 为了使 MyBatis 能够连接并操作 ClickHouse 数据库,通常会采用 Druid 作为数据源管理工具[^2]。以下是具体的配置方法: #### Maven 依赖设置 首先,在项目的 `pom.xml` 文件中加入必要的依赖项来支持 MyBatis 和 ClickHouse 的集成。 ```xml <dependencies> <!-- MyBatis Core --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!-- JDBC Driver for ClickHouse --> <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.2</version> </dependency> <!-- Druid Connection Pool --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> <!-- MyBatis-Spring Integration (if using Spring Framework) --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> </dependencies> ``` #### DataSource Configuration with Druid 接着定义一个基于 Druid 的数据源 Bean 来建立与 ClickHouse 的连接池。 ```java import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class DataSourceConfig { @Bean(name = "dataSource") public DruidDataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl("jdbc:clickhouse://localhost:8123/default"); druidDataSource.setUsername("default"); // 如果有用户名的话 druidDataSource.setPassword(""); // 密码为空则留空字符串 return druidDataSource; } } ``` #### MyBatis Mapper XML Example 创建相应的 SQL 映射文件用于描述查询语句以及参数映射关系。 ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.YourMapper"> <select id="selectAllRecords" resultType="map"> SELECT * FROM your_table_name LIMIT #{limit}; </select> </mapper> ``` 上述代码片段展示了如何利用 MyBatis 结合 Druid 实现对 ClickHouse 数据库的有效访问。值得注意的是,由于 MyBatis 对于 ClickHouse 支持较为简洁直接的设计思路——即不引入额外复杂的组件或解析过程,这不仅提高了系统的性能表现也简化了开发人员对于底层逻辑的理解难度[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值