DButils实现CRUD操作

DButils

    • 增删改操作
    • 查询操作
      • 查询表中一条或多条记录
    • 关闭连接

commons-dbutils是Apache组织提供的一个开源JDBC工具类库,封装了针对于数据库的增删改查操作。

增删改操作

使用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);
}

你可能感兴趣的:(数据库学习)