解释都在注释中,直接贴代码吧!
首先要准备一个javabean来接收数据库传来的信息 User如下:
package cn.edu.bdu.user;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
接下来就是DBUtils的使用了,直接贴代码了,注释都很详细
package com.itheima.DBUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import cn.edu.bdu.user.User;
public class testDBUtils {
@Test
public void test(){
//首先使用c3p0创建DataSource
ComboPooledDataSource cpds = new ComboPooledDataSource();
try {
//DBUtils只是帮助我们简化增删改查的代码,连接的创建和获取,不在DBUtils的考虑范围之内
//创建QueryRunner对象,可以操作增删改查 new QueryRunner的时候要注意传参,参数为一个连接池 dataSource
QueryRunner queryRunner = new QueryRunner(cpds);
//测试增加
// queryRunner.update("insert into stu_user values(null,?,?)", "aaa","123456");
//测试删除
// queryRunner.update("delete from stu_user where id = ?",2);
//测试修改
// queryRunner.update("update stu_user set username=? where id=?", "bbb",3);
//测试查询,首先用自己写匿名实现类自己封装的方法 后面的rsh是ResultSetHandler<T> T装泛型,此时需要写一个JavaBean来封装 目前只是查询一个的
User user = queryRunner.query("select * from stu_user where id=?",new ResultSetHandler<User>(){
User user = new User();
@Override
public User handle(ResultSet rs) throws SQLException {
while(rs.next()){
//获取三个的值后封装
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
user.setId(id);
user.setUsername(username);
user.setPassword(password);
}
return user;
}
} , 3);
System.out.println(user);
//测试查询,使用现在不自己写匿名实现类了,直接用人家写的实现类
//BeanHandler(一个对象) 和 BeanListHandler(多个对象) 尖括号里面装JavaBean 圆括号里面装字节码,他要通过字节码来创建实例化对象
List<User> list = queryRunner.query("select * from stu_user", new BeanListHandler<User>(User.class));
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}