jdbc之c3p0笔记
2016-03-21 21:49
363 查看
c3p0:一种连接池,能与JNDI绑定便于管理(不同的数据库)。
首先需要导4个jar包,commons-dbutils-1.4.jar,mysql-connector-java-5.1.7-bin.jar,mchange-commons-0.2.jarc3p0-0.9.2-pre1.jar;
建立一个XML文件:c3p0-config.xml(必须放在SRC目录下)
接下载创建一个JdbcUtils工具类,用来返回连接池的对象和connection对象
package cn.c3p0_2;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtil {
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
/**
* 使用连接池返回con连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
/**
* 返回连接池对象
* @return
*/
public static DataSource getDataSource(){
return dataSource;
}
}
-----------------------------------------
再创建一个domian实体类对应数据库的的字段
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
---------------------------------------
接下来就用到dbUtile这个jar包的类
QueryRunner类:对JDBC进行封装,现在需要用到它,
两种构造方法:
一种是需要提供DataSource对象
另一种不需要
测试类
public class Demo2 {
@Test
public void fun() throws SQLException{
//获取
//创建对象
QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
//SQL模板
String sql = "insert into student values(?,?)";
//数组
Object params[] = {"zhansan",88};
//将数据插入
qrun.update(sql, params);
}
@Test
public void fun2() throws SQLException{
//创建对象
QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
String sql = "select * from student where age=?";
Object params[] ={0};
//这里BeanHandler是一个子类实现类,调用这个类可以获得一个对象
Student s =qr.query(sql, new BeanHandler<Student>(Student.class),params);
System.out.println(s);
}
}
-------------------------------------------------------------
QueryRunner方法:
int update(String sql, Object... params) : 可执行增、删、改语句
* int update(Connection con, String sql, Object... parmas) : 需要调用者提供Connection,支持事务!
query方法:
* T query(String sql, ResultSetHandler rsh, Object... params) :可执行查询
> 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!
* T query(Connection con, String sql, ResultSetHadler rsh, Object... params),支持事务
接口实现类:
BeanHandler(单行) --> 构造器需要一个Class类型的参数,用来把一行结果转换成指定类型的javaBean对象
* BeanListHandler(多行) --> 构造器也是需要一个Class类型的参数,用来把一行结果集转换成一个javabean,那么多行就是转换成List对象,一堆javabean
* MapHandler(单行) --> 把一行结果集转换Map对象
* MapListHandler(多行) --> 把一行记录转换成一个Map,多行就是多个Map,即List<Map>!
* ScalarHandler(单行单列) --> 通常用与select count(*) from t_stu语句!结果集是单行单列的!它返回一个Object
首先需要导4个jar包,commons-dbutils-1.4.jar,mysql-connector-java-5.1.7-bin.jar,mchange-commons-0.2.jarc3p0-0.9.2-pre1.jar;
建立一个XML文件:c3p0-config.xml(必须放在SRC目录下)
接下载创建一个JdbcUtils工具类,用来返回连接池的对象和connection对象
package cn.c3p0_2;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtil {
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
/**
* 使用连接池返回con连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
/**
* 返回连接池对象
* @return
*/
public static DataSource getDataSource(){
return dataSource;
}
}
-----------------------------------------
再创建一个domian实体类对应数据库的的字段
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
---------------------------------------
接下来就用到dbUtile这个jar包的类
QueryRunner类:对JDBC进行封装,现在需要用到它,
两种构造方法:
一种是需要提供DataSource对象
另一种不需要
测试类
public class Demo2 {
@Test
public void fun() throws SQLException{
//获取
//创建对象
QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
//SQL模板
String sql = "insert into student values(?,?)";
//数组
Object params[] = {"zhansan",88};
//将数据插入
qrun.update(sql, params);
}
@Test
public void fun2() throws SQLException{
//创建对象
QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
String sql = "select * from student where age=?";
Object params[] ={0};
//这里BeanHandler是一个子类实现类,调用这个类可以获得一个对象
Student s =qr.query(sql, new BeanHandler<Student>(Student.class),params);
System.out.println(s);
}
}
-------------------------------------------------------------
QueryRunner方法:
int update(String sql, Object... params) : 可执行增、删、改语句
* int update(Connection con, String sql, Object... parmas) : 需要调用者提供Connection,支持事务!
query方法:
* T query(String sql, ResultSetHandler rsh, Object... params) :可执行查询
> 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!
* T query(Connection con, String sql, ResultSetHadler rsh, Object... params),支持事务
接口实现类:
BeanHandler(单行) --> 构造器需要一个Class类型的参数,用来把一行结果转换成指定类型的javaBean对象
* BeanListHandler(多行) --> 构造器也是需要一个Class类型的参数,用来把一行结果集转换成一个javabean,那么多行就是转换成List对象,一堆javabean
* MapHandler(单行) --> 把一行结果集转换Map对象
* MapListHandler(多行) --> 把一行记录转换成一个Map,多行就是多个Map,即List<Map>!
* ScalarHandler(单行单列) --> 通常用与select count(*) from t_stu语句!结果集是单行单列的!它返回一个Object
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马