首页 / JAVA / JAVA基础-JDBC连接池
JAVA基础-JDBC连接池
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA基础-JDBC连接池,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5969字,纯文字阅读大概需要9分钟。
内容图文
连接池
连接池主要是用来管理 Connection 对象,减少创建的时候消耗性能,然后还可以重复使用它。当你在使用的时候,如果说访问量激增时,有可能需要等待一定的时间,因为 cpu 会将空闲下来的 Connection 拿来使用,当你使用完了之后,还需要归还到连接池中,让下一个访问者来继续使用
Java 主要在数据连接池方向上,通过提供一套公共的接口:java.sql.DataSource。接着,不同的厂商就 会根据这套规范,然后制定对应的产品,比如 MyBatis、Hibernate 等框架都有不同的连接池实现方 案。
这样,其实是方便了 Java 开发者,我们开发者其实只需要提供一套代码,就可以在不同的厂商产品之间进行切换,不需要针对每个不同的连接池产品去修改我们的代码。 常用的连接池:DBCP、C3P0
C3P0
开源产品,Spring、Hibernate 等框架都有使用它。
首先我们要导入jar包和配置文件配置文件 c3p0-config.xml 。
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- c3p0配置文件 配置数据源 -->
<!-- default-config 默认 -->
<default-config>
<!-- 驱动 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- url -->
<property name="jdbcUrl">jdbc:mysql:///mybase02</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root</property>
</default-config>
<!-- named-config 通过名字指定 -->
<named-config name="test">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///mybase03</property>
<property name="user">root</property>
<property name="password">root</property>
</named-config>
</c3p0-config>
C3P0我们使用起来就很方便,可以直接得到connection对象。同样的,我们依旧利用C3P0封装我们的工具类。
package util;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
//c3p0工具类
public class C3P0Utils {
//找的是默认配置文件中的数据源信息
private static ComboPooledDataSource cpds=new ComboPooledDataSource();
//找的是配置文件中 通过名字指定的信息
ComboPooledDataSource cpds2=new ComboPooledDataSource("test");
//返回建立连接对象
public static Connection getConnection() throws SQLException {
return cpds.getConnection();
}
//返回dataSource 数据源 DButils
public static DataSource getDS() {
return cpds;
}
// public static void main(String[] args) {
//
//
// try {
// //得到建立连接对象
// Connection c1 = cpds.getConnection();
//
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
}
DBUtils
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,创建连接、结果集封装、释放资源,同时也不会影响程序的性能。
API介绍:
- org.apache.commons.dbutils.QueryRunner --- 核心
- org.apache.commons.dbutils.ResultSetHandler --- 结果集封装器
- org.apache.commons.dbutils.DbUtils --- 工具类
package dbutils;
import static org.junit.Assert.*;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.junit.Test;
import bean.Classes;
import util.C3P0Utils;
public class Demo1 {
//DButils封装了 结果 优化查询这部分
//结果返回单行数据
@Test
public void fun1() throws Exception {
//第一步 初始化QueryRunner对象 并传入数据源
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
//执行查询并返回结果
//sql sql 语句
String sql="select * from classes where id=?";
// ResultSetHandler rsh;//结果集处理器 dbutils帮助封装了结果
//实体类 属性名跟表中字段要一直 有set和get方法 封装
Classes c1=qr.query(sql, new BeanHandler<Classes>(Classes.class),3);
System.out.println(c1);
}
//结果返回多行数据
@Test
public void fun2() throws Exception {
//第一步 初始化QueryRunner对象 并传入数据源(连接池工具类中封装方法返回数据源)
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
//执行查询并返回结果
//sql sql 语句
String sql="select * from classes";
List<Classes> ll1=qr.query(sql,new BeanListHandler<Classes>(Classes.class) );
System.out.println(ll1);
}
//模糊查询案例
@Test
public void fun3() throws Exception {
//第一步 初始化QueryRunner对象 并传入数据源(连接池工具类中封装方法返回数据源)
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
//执行查询并返回结果
//sql sql 语句
String sql="select * from classes where name like ?";
List<Classes> ll1=qr.query(sql,new BeanListHandler<Classes>(Classes.class),"%二%" );
System.out.println(ll1);
}
//其他增删改案例 插入案例 增删改 调用
@Test
public void fun4() throws Exception {
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
//执行查询并返回结果
//sql sql 语句
String sql="insert into classes values(?,?)";
int r1=qr.update(sql,1,"一班");
if(r1>0) {
System.out.println("添加成功!");
}
}
//删除案例
@Test
public void fun5() throws Exception {
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
String sql="delete from classes where id=?";
int rows=qr.update(sql,1);
if(rows>0) {
System.out.println("删除成功");
System.out.println(rows);
}
}
//修改案例
@Test
public void fun6() throws Exception {
QueryRunner queryRunner=new QueryRunner(C3P0Utils.getDS());
String sql="update classes set name=? where id=?";
int rows=queryRunner.update(sql,"2班",2);
if(rows>0) {
System.out.println("修改成功");
}
}
//查询结果集 beanhandler 单行bean 接收 beanListhandler:多行List<bean>
// maphandler 单行 返回类型map mapListhandler 多行
@Test
public void fun7() throws Exception {
//第一步 初始化QueryRunner对象 并传入数据源
QueryRunner qr=new QueryRunner(C3P0Utils.getDS());
//执行查询并返回结果
//sql sql 语句
String sql="select * from classes where id=?";
// ResultSetHandler rsh;//结果集处理器 dbutils帮助封装了结果
//实体类 属性名跟表中字段要一直 有set和get方法 封装
Map<String, Object> query = qr.query(sql, new MapHandler(),3);
System.out.println(query);
}
}
JAVA基础-JDBC连接池
标签:对象 curl 调用 classes 数据源 tac demo1 文件中 结果
本文系统来源:https://www.cnblogs.com/JeasonIsCoding/p/13232604.html
内容总结
以上是互联网集市为您收集整理的JAVA基础-JDBC连接池全部内容,希望文章能够帮你解决JAVA基础-JDBC连接池所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。