Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作
文章目錄
- 一、Apache-DBUtils簡介
- 二、主要API的使用
- 1、DbUtils類
- 2、QueryRunner類
- 3、ResultSetHandler接口及實現類
- 三、Apache-DBUtils驅動下載
一、Apache-DBUtils簡介
commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,學習成本極低,并且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程序的性能。
API介紹:
二、主要API的使用
1、DbUtils類
提供如關閉連接、裝載JDBC驅動程序等常規工作的工具類,里面的所有方法都是靜態的。主要方法如下:
①public static void close(…) throws java.sql.SQLException: DbUtils類提供了三個重載的關閉方法。這些方法檢查所提供的參數是不是NULL,如果不是的話,它們就關閉Connection、Statement和ResultSet。
②public static void closeQuietly(…):這一類方法不僅能在Connection、Statement和ResultSet為NULL情況下避免關閉,還能隱藏一些在程序中拋出的SQLEeception。
③public static void commitAndClose(Connection conn)throws SQLException:用來提交連接的事務,然后關閉連接。
④public static void commitAndCloseQuietly(Connection conn): 用來提交連接,然后關閉連接,并且在關閉連接時不拋出SQL異常。
⑤public static void rollback(Connection conn)throws SQLException:允許conn為null,因為方法內部做了判斷。
⑥public static void rollbackAndClose(Connection conn)throws SQLException
⑦rollbackAndCloseQuietly(Connection)
⑧public static boolean loadDriver(java.lang.String driverClassName):這一方裝載并注冊JDBC驅動程序,如果成功就返回true。
2、QueryRunner類
該類簡單化了SQL查詢,它與ResultSetHandler組合在一起使用可以完成大部分的數據庫操作,能夠大大減少編碼量。
QueryRunner類提供了兩個構造器:
①默認的構造器
②需要一個 javax.sql.DataSource 來作參數的構造器
QueryRunner類的主要方法:
①更新
public int update(Connection conn, String sql, Object... params) throws SQLException:用來執行一個更新(插入、更新或刪除)操作。
②插入
public T insert(Connection conn,String sql,ResultSetHandler rsh, Object... params) throws SQLException:只支持INSERT語句,其中 rsh - The handler used to create the result object from the ResultSet of auto-generated keys. 返回值: An object generated by the handler.即自動生成的鍵值。
③批量處理
public int[] batch(Connection conn,String sql,Object[][] params) throws SQLException: INSERT、UPDATE、DELETE語句。
public T insertBatch(Connection conn,String sql,ResultSetHandler rsh,Object[][] params)throws SQLException:只支持INSERT語句
④查詢
public Object query(Connection conn, String sql, ResultSetHandler rsh,Object... params) throws SQLException:執行一個查詢操作,在這個查詢中,對象數組中的每個元素值被用來作為查詢語句的置換參數。該方法會自行處理 PreparedStatement 和 ResultSet 的創建和關閉。
測試:
//添加 public void testInsert() throws Exception {QueryRunner runner = new QueryRunner();Connection conn = JDBCUtils.getConnection3();String sql = "insert into customers(name,email,birth)values(?,?,?)";int count = runner.update(conn, sql, "何成飛", "he@qq.com", "1992-09-08");System.out.println("添加了" + count + "條記錄");JDBCUtils.closeResource(conn, null); } //刪除 public void testDelete() throws Exception {QueryRunner runner = new QueryRunner();Connection conn = JDBCUtils.getConnection3();String sql = "delete from customers where id < ?";int count = runner.update(conn, sql,3);System.out.println("刪除了" + count + "條記錄");JDBCUtils.closeResource(conn, null); }3、ResultSetHandler接口及實現類
該接口用于處理 java.sql.ResultSet,將數據按要求轉換為另一種形式。
ResultSetHandler 接口提供了一個單獨的方法:Object handle (java.sql.ResultSet.rs)。
接口的主要實現類:
測試:
/* * 測試查詢:查詢一條記錄 * 使用ResultSetHandler的實現類:BeanHandler */public void testQueryInstance() throws Exception{QueryRunner runner = new QueryRunner();Connection conn = JDBCUtils.getConnection();String sql = "select id,name,email,birth from customers where id = ?";BeanHandler<Customer> handler = new BeanHandler<>(Customer.class);Customer customer = runner.query(conn, sql, handler, 23);System.out.println(customer);JDBCUtils.closeResource(conn, null); } /* * 測試查詢:查詢多條記錄構成的集合 * 使用ResultSetHandler的實現類:BeanListHandler */public void testQueryList() throws Exception{QueryRunner runner = new QueryRunner();Connection conn = JDBCUtils.getConnection();String sql = "select id,name,email,birth from customers where id < ?";BeanListHandler<Customer> handler = new BeanListHandler<>(Customer.class);List<Customer> list = runner.query(conn, sql, handler, 23);list.forEach(System.out::println);JDBCUtils.closeResource(conn, null); } /* * 如何查詢類似于最大的,最小的,平均的,總和,個數相關的數據, * 使用ScalarHandler */public void testQueryValue() throws Exception{QueryRunner runner = new QueryRunner();Connection conn = JDBCUtils.getConnection();//個數:// String sql = "select count(*) from customers where id < ?";// ScalarHandler handler = new ScalarHandler();// long count = (long) runner.query(conn, sql, handler, 20);// System.out.println(count);//最大值:String sql = "select max(birth) from customers";ScalarHandler handler = new ScalarHandler();Date birth = (Date) runner.query(conn, sql, handler);System.out.println(birth);JDBCUtils.closeResource(conn, null); }三、Apache-DBUtils驅動下載
Apache-DBUtils
總結
以上是生活随笔為你收集整理的Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云张勇:AI云服务需求非常旺盛
- 下一篇: 江南大学物联网工程学院数据库课程实验二作