dbutil操作數據庫工具類
步驟
- 導入jar包
c3p0-0.9.1.2.jar commons-dbutils-1.6.jar mysql-connector-java-5.1.12-bin.jar
- 把c3p0配置文件放到src目錄下(src下一級目錄,否則出錯),
c3p0-config.xml (連接數據庫的驅動,url,名字,密碼,,,,等)
- 創建連接池
ComboPooledDataSource ds = new ComboPooledDataSource();
- 拿到執行sql的關鍵對象QueryRunner
QueryRunner qr = new QueryRunner(ds);
- 寫sql語句
增:String sql=” insert into user(name,age) values(?,?)”;
刪:String sql="delete from user where id="+u.getId();
改:String sql="update user set name=?,age=? where id=?";
查:
查一個:String sql="select * from user where id=?";
查一批:String sql="select * from user";
- 將sql語句放入Query對象,調用相應方法增刪改查
不要疑惑,增加、修改、刪除都可以調用update方法,內部會通過判斷有無id而具體實行增加還是修改,只有sql時刪除。
增:int num = qr.update(sql, u.getName(),u.getAge());
改:int num = qr.update(sql, u.getName(),u.getAge(),u.getId());
刪:int num=qr.update(sql);
查:
查一個
User user = qr.query(sql, new BeanHandler<User>(User.class), id);
查一批
List<User> users = qr.query(sql, new BeanListHandler<User>(User.class));
注:增刪改都可用Query對象的update方法,查詢的同時將查到的數據封裝成對應的對象或者集合。
示例代碼:
c3p0-config.xml
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/test</property>
<property name="user">root</property>
<property name="password"></property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
</default-config>
</c3p0-config>
DbUtil.java
package util;
import org.apache.commons.dbutils.QueryRunner;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DbUtil {
//構造數據源
private static ComboPooledDataSource ds=new ComboPooledDataSource();
public static QueryRunner getRuertyRunner(){
//拿到操作數據庫的關鍵對象QueryRunner,把數據源放進去
QueryRunner qr = new QueryRunner(ds);
return qr;
}
}
User.java
package entity;
public class User {
private int id;
private int age;
private String name;
public User() {
super();
}
public User(int id, int age, String name) {
super();
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserDao.java
package dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import util.DbUtil;
import entity.User;
public class UserDao {
/*public int add(User u){
Connection conn = JdbcUtil.getConnection();
String sql="insert into user(name,age) values(?,?)";
PreparedStatement ps=null;
int num=0;
try {
ps = conn.prepareStatement(sql);
ps.setObject(1, u.getName());
ps.setObject(2, u.getAge());
num=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return num;
}*/
//dbutil
QueryRunner qr = DbUtil.getRuertyRunner();
public int add(User u){
String sql="insert into user(name,age) values(?,?)";
int num=0;
try {
num = qr.update(sql, u.getName(),u.getAge());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public int delete(User u){
String sql="delete from user where id="+u.getId();
int num=0;
try {
num = qr.update(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public int update(User u){
String sql="update user set name=?,age=? where id=?";
int num =0;
try {
num= qr.update(sql, u.getName(),u.getAge(),u.getId());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public User selectOne(int id){
String sql="select * from user where id=?";
User user=null;
try {
user = qr.query(sql, new BeanHandler<User>(User.class), id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}
public List<User> selectAll(){
String sql="select * from user";
List<User> users=null;
try {
users = qr.query(sql, new BeanListHandler<User>(User.class));
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
}