使用dbutils里的QueryRunner类就可以实现各种增删改操作,具体的代码如下;
import com.bsx.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
public class DbutilsTest {
@Test
//使用QueryRunner类里的update方法实现数据库增加操作
public void DbutilsTest(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "INSERT INTO t_user(`username`,`password`,`email`) VALUES (?,?,?)";
try {
runner.update(con,sql,"admin","123456","[email protected]");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
}
删除和修改的操作与增加类似。
下面代码是使用 BeanHandler用于接受查询到的一条记录并封装表中的一条记录。
@Test
public void DbutilsQueryTest(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "select * from t_user where id=?";
//BeanHandler 是 ResultSetHandler 接口的实现类,用于封装表中的一条记录
BeanHandler<User> handler = new BeanHandler<>(User.class);
try {
User user = runner.query(con, sql, handler, 1);
System.out.println(user);
}
catch (Exception e){
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
下面代码使用 BeanListHandler 接受查询到的多条记录。
@Test
public void DbutilsQueryTest2(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "select * from t_user where id>?";
//BeanListHandler 是 ResultSetHandler 接口的实现类,用于封装表中的多条记录
BeanListHandler<User> handler = new BeanListHandler<>(User.class);
try {
List<User> userList = runner.query(con, sql, handler, 0);
userList.forEach(System.out::println);
}
catch (Exception e){
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
下面代码使用MapHandler 接受一条记录,封装键值对形式。
public void DbutilsQueryTest3(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "select * from t_user where id=?";
//MapHandler 是 ResultSetHandler 接口的实现类,用于封装表中的一条记录
MapHandler handler = new MapHandler();
try {
Map<String, Object> map = runner.query(con, sql, handler, 1);
System.out.println(map);
}
catch (Exception e){
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
下面代码使用MapListHandler 接受多条记录的键值对,封装成list。
@Test
public void DbutilsQueryTest4(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "select * from t_user where id>?";
//MapListHandler 是 ResultSetHandler 接口的实现类,用于封装表中的一条记录
MapListHandler handler = new MapListHandler();
try {
List<Map<String, Object>> list = runner.query(con, sql, handler, 0);
System.out.println(list);
}
catch (Exception e){
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
下面代码使用ScalarHandler 用于查询特殊值。
@Test
public void DbutilsQueryTest5(){
QueryRunner runner = new QueryRunner();
Connection con = JdbcUtils.getConnection();
String sql = "select count(*) from t_user ";
// ScalarHandler 是 ResultSetHandler 接口的实现类,用于查询特殊值
ScalarHandler handler =new ScalarHandler();
try {
Object query = runner.query(con, sql, handler);
System.out.println(query);
}
catch (Exception e){
e.printStackTrace();
}finally {
JdbcUtils.close(con);
}
}
dbutils提供了关闭数据库连接的方法可以直接使用。
/*
* 关闭数据库连接*/
public static void close(Connection con) {
DbUtils.closeQuietly(con);
}