DBUtils

1.通过BasicDataSource类直接创建数据源对象
在使用BasicDataSource类创建一个数据源对象时,需要手动给数据源对象设置属性值,然后获取数据库连接对象。
例:

package chapter10;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

public class example01 {

public static DataSource ds=null;
static {
BasicDataSource b=new BasicDataSource();
b.setDriverClassName(“com.mysql.jdbc.Driver”);
b.setUrl(“jdbc:mysql://localhost:3306/jdbc”);
b.setUsername(“root”);
b.setPassword(“123456”);

   b.setInitialSize(5);
   b.setMaxActive(10);
   
   ds=b;

}
public static void main(String[] args) throws SQLException {
Connection conn=ds.getConnection();
DatabaseMetaData m=conn.getMetaData();
System.out.println(m.getURL());
System.out.println(m.getUserName());
System.out.println(m.getDriverName());
}
}
复制JDBCUtils.java文件到cn.itcast.chapter10.example包下
3、在包中创建BaseDao类

package cn.itcast.chapter10.example;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbutils.ResultSetHandler;

public class BaseDao {
public static Object query(String sql,ResultSetHandler<?> rsh,Object…params) throws SQLException {
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
Object obj=null;
try {
conn=JDBCUtils.getConnection();
pstmt=conn.prepareStatement(sql);
for(int i=0;params!=null && i<params.length;i++) {
pstmt.setObject(i+1, params[i]);
}
rs=pstmt.executeQuery();
obj=rsh.handle(rs);
}catch(Exception e) {
return new Exception(e.getMessage());
}
finally {
JDBCUtils.release(rs,pstmt,conn);
}
return rs;

}
}
DBUtils工具
1.BeanultSetHandler实现类
先创建一个名为BaseDao的类该类中编写了一个通用查询方法

package chapter10;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.apache.commons.dbutils.ResultSetHandler;

public class BaseDao {
public static Object query(String sql,ResultSetHandler<?> rsh,Object… params) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn=JDBCUtils.getConnection();
ps=conn.prepareStatement(sql);
for(int i=0;params!=null && i<params.length;i++) {
ps.setObject(i+1, params[i]);
}
rs=ps.executeQuery();
Object obj=rsh.handle(rs);
return obj;
}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.realse(rs, ps, conn);
}
return rs;
}
}

package cn.itcast.chapter10.example;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class example03 {undefined
public static DataSource ds=null;
static {undefined
ComboPooledDataSource cpds=new ComboPooledDataSource();
try {undefined
cpds.setDriverClass(“com.mysql.jdbc.Driver”);
cpds.setJdbcUrl(“jdbc:mysql://localhost:3306/jdbc”);
cpds.setUser(“root”);
cpds.setPassword(“123456”);
cpds.setInitialPoolSize(5);
cpds.setMaxPoolSize(10);
ds=cpds;
}catch(PropertyVetoException e) {undefined
e.printStackTrace();
}
}
public static void main(String[] args) throws SQLException{undefined
Connection conn=ds.getConnection();
DatabaseMetaData metadata=conn.getMetaData();
System.out.println(metadata.getURL());
System.out.println(metadata.getUserName());
System.out.println(metadata.getDriverName());

}
}

package cn.itcast.chapter10.example;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class example04 {undefined
public static DataSource ds=null;
static {undefined
ComboPooledDataSource cpds=new ComboPooledDataSource(“dashuju”);
ds=cpds;
}
public static void main(String[] args) throws SQLException{undefined
Connection conn=ds.getConnection();
DatabaseMetaData metadata=conn.getMetaData();
System.out.println(metadata.getURL());
System.out.println(metadata.getUserName());
System.out.println(metadata.getDriverName());
}
}

可以看出BeanHandler已成功将id为12的数据存入到了实体user对象中。

在包下建一个名为ResultSetTest2的类用来演示BeanListHandler类对结果集的处理

package chapter10;

import java.util.ArrayList;

import org.apache.commons.dbutils.handlers.BeanListHandler;

public class ResultSetTest2 {
public static void testBeanHandler() {
BaseDao b=new BaseDao();
String sql=“select * from users”;
ArrayList list = (ArrayList) b.query(sql, new BeanListHandler(User.class));

for(int i=0;i<list.size();i++) {
	System.out.println("第"+(i+1)+"条数据的username值为:"+list.get(i).getName());
}

}
public static void main(String[] args) {
testBeanHandler();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值