c3p0连接池 概述、官网和下载、增删改查、多表查询

目录

什么是连接池

为什么要使用连接池

c3p0连接池

c3p0官网和api下载

列:使用线程解决:多个线程访问共享变量不互相影响

列:使用连接池

mysql的实现

tb_user表

tb_address表(地址表)

导包新建c3p0-config.xml文件

新建JDBC Util工具类Dbutils.java

JDBC连接实现

用户接口UserDao.java

用户实现类UserDaoImpl.java

测试类:测试用户名和密码是否查询成功

加深内容:测试QueryRunner.java中的方法

封装地址数据Address.java

封装User.java

多表查询工具类CommonsTools.java

方法测试TestTxQueryRunner.java

结果:


什么是连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

为什么要使用连接池

  •  数据库连接:每次都要打卡和释放连接,造成系统性能低下,占用时间
  • 数据库连接池:建立足够的连接,这些连接组成连接池。程序对池中的内容进行申请连接、使用和释放   
  • 对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。
  • 并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数

 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。 

c3p0连接池

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

c3p0官网和api下载

http://mvnrepository.com/

下载

列:使用线程解决:多个线程访问共享变量不互相影响

使用包junit-4.8.2.jar

public class TestThreadLocal {
	//fun1相当于主线程
	@Test
     public void fun1(){
    	 ThreadLocal<String> tl=new ThreadLocal<String>();
    	 tl.set("aaa");//
    	 String temp=tl.get();
    	 
		 //匿名类 开启一个线程
    	 new Thread(){
    		 @Override
    		public void run() {
    			// TODO Auto-generated method stub
    			tl.set("bbb");
    			System.out.println(Thread.currentThread().getName()+"===="+tl.get());
    		}
    	 }.start();
    	 System.out.println(Thread.currentThread().getName()+"****"+temp);
     }
}

结果:

列:使用连接池

mysql的实现

tb_user表

tb_address表(地址表)

导包与新建c3p0-config.xml文件

导包

   命名必须为c3p0-config.xml,

   必须放在src目录下,c3p0包会默认加载src目录下的c3p0-config.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 这是默认配置信息 -->
	<default-config>
		<!-- 连接四大参数配置 -->
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/shopping
		</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">root</property>
		<!-- 池参数配置 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</default-config>
</c3p0-config>

新建JDBC Util工具类Dbutils.java

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Dbutils {
    private static DataSource ds=new ComboPooledDataSource();//拿到数据源
    //解决线程同步
    private static ThreadLocal<Connection> tl=new ThreadLocal<Connection>();
    //获取连接池
    public static DataSource getDataSource(){
    	return ds;
    }
    /**
     * 获取连接
   
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值