JDBC知識學習——DBUtils的使用學習

DBUtils工具類

注意:需要導入commons-dbutils-1.6.jar文件
代碼示例如下:

public class DBUtilsTest {
    QueryRunner queryRunner=new QueryRunner();
    /*
    * ScalarHandler:把結果集轉爲一個數值返回
    * */
    @Test
    public void testScalarHandler(){
        Connection connection=null;
        try {
            connection=JDBCTools.getConnectionPool();
            String sql="select count(id) from user";
            Object rs=queryRunner.query(connection,sql,
                    new ScalarHandler<>());
            System.out.println(rs);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
    /*
    * MapListHandler:將結果集轉爲一個map的list
    * Map對應查詢的一條記錄
    * */
    @Test
    public void testMapListHandler(){
        Connection connection=null;
        try {
            connection=JDBCTools.getConnectionPool();
            String sql="select id,name,pwd,sex,home,info from user";
            List<Map<String,Object>> rs=queryRunner.query(connection,sql,
                    new MapListHandler());
            System.out.println(rs);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
    /*
    * MapHandler:返回sql對應的第一條記錄的map對象
    * 鍵:sql查詢的列名,值:列名的值
    * */
@Test
public void testMapHandler(){
    Connection connection=null;
    try {
        connection=JDBCTools.getConnectionPool();
        String sql="select id,name,pwd,sex,home,info from user";
        Map<String,Object> rs=queryRunner.query(connection,sql,
                new MapHandler());
        System.out.println(rs);
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        JDBCTools.releaseSource(null,null,connection);
    }
}
    /**
    *@ClassName DBUtilsTest
    *@Description BeanListHandler:把結果集轉爲一個集合
    *@Param []
    *@Return void
    *@Date 2020/2/18 12:02
    *@Author Roy
    */
    @Test
    public  void testBeanListHandler(){
        Connection connection=null;
        try {
            connection=JDBCTools.getConnectionPool();
            String sql="select id,name,pwd,sex,home,info from user";
            List<User> users=queryRunner.query(connection,sql,
                    new BeanListHandler<>(User.class));
            System.out.println(users);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
    /**
    *@ClassName DBUtilsTest
    *@Description BeanHandler:把結果集的第一條記錄轉爲創建Bean Handler
     * 對象時傳入的class參數對應的對象。
    *@Param []
    *@Return void
    *@Date 2020/2/18 11:57
    *@Author Roy
    */
    @Test
            public void testBeanHandler(){
        Connection connection=null;
        try {
            connection=JDBCTools.getConnectionPool();
            String sql="select id,name,pwd,sex,home,info from user where id=?";
           User user=queryRunner.query(connection,sql,
                   new BeanHandler<>(User.class),7);
            System.out.println(user);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
//定義需要傳入的的Handler
    class  myResultSetHandler implements ResultSetHandler{
            List<User> users=new ArrayList<>();
        @Override
        public Object handle(ResultSet resultSet) throws SQLException {
            while (resultSet.next()){
                int id=resultSet.getInt(1);
                String name=resultSet.getString(2);
                String pwd=resultSet.getString(3);
                String sex=resultSet.getString(4);
                String home=resultSet.getString(5);
                String info=resultSet.getString(6);
                User user=new User(id,name,pwd,sex,home,info);
                users.add(user);
            }
            return users;
        }
    }
    /**
    *@ClassName DBUtilsTest
    *@Description QueryRunner的query方法返回值取決於ResultSetHandler參數的
     * handle方法的返回值
    *@Param []
    *@Return void
    *@Date 2020/2/18 11:41
    *@Author Roy
    */
    @Test
    public void testQuery(){
        Connection connection=null;
        try {
                connection=JDBCTools.getConnectionPool();
                String sql="select id,name,pwd,sex,home,info from user";
                Object obj=queryRunner.query(connection,sql,new myResultSetHandler());
            System.out.println(obj);
        }catch (Exception e){
e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
    /*
    *DBUtils類的update方法可用於insert、delete和update
    * */
    @Test
    public void testQueryRunnerUpdate(){
        //創建QueryRunner的實現類
        QueryRunner queryRunner=new QueryRunner();
        String sql="delete from user where  id in (?,?)";
        Connection connection=null;
        try{
                connection=JDBCTools.getConnectionPool();
        //使用update方法
                queryRunner.update(connection,sql,11,12);
            System.out.println("sql執行成功");
        }catch (Exception e){
        e.printStackTrace();
        }finally {
            JDBCTools.releaseSource(null,null,connection);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章