1. 程式人生 > >自制DbHelper實現自動化數據庫交互

自制DbHelper實現自動化數據庫交互

connect span 基礎 圖片 配置 [] com n) quick

之前一直對apache的DbUtils很好奇,也很佩服其中的設計上的智慧。於是就自己模擬實現了一個更加簡便的小框架。我們只需要在配置文件中寫上數據庫層面的連接信息,就可以隨心所欲的實現自己的需求了。

設計思路

技術分享圖片

依賴

  • apache-commons-logging.jar
  • apache-commons-beanutils.jar
  • mysql-connector.jar

技術細節

其中最主要的是是使用了反射技術和泛型操作,實現了對bean對象的屬性的解析以及實例化相關的bean對象。

public class Converter<T> {

    public static <T> T convert2Bean
(ResultSet rs, Class<T> bean) throws Exception { Field[] fields = bean.getDeclaredFields(); T obj = bean.newInstance(); for (Field field : fields) { String pname = field.getName(); BeanUtils.setProperty(obj, pname, rs.getObject(pname)); } return
obj != null ? obj : null; } public static <T> List<T> convert2BeanList(ResultSet rs, Class<T> bean) throws Exception { Field[] fields = bean.getDeclaredFields(); List<T> lists = new ArrayList<T>(); while (rs.next()) { T obj = bean.newInstance(); for
(Field field : fields) { String pname = field.getName(); BeanUtils.setProperty(obj, pname, rs.getObject(pname)); } lists.add(obj); } return lists != null ? lists : null; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

確保數據庫中字段與Bean的屬性保持一致,否則convert過程會失效 :-)

測試代碼

這裏沒有將完整的代碼貼出來,但是看到
List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class));

List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class),params);

足以說明問題了吧。

public static void main(String[] args) throws Exception {
        String sql = "select * from datetest";
        QueryRunner runner = new QueryRunner();
        DbHelper.register();
        Connection conn = DbHelper.getConn();
        List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class));
        for (DateTest date : dates) {
            System.out.println(date.toString());
        }
        System.out.println("------------------------------------------------------");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
public static void main(String[] args) throws Exception {
        String sql = "select * from dataset where name=? and age=?";
        Object[] params = {‘mark‘,20};
        QueryRunner runner = new QueryRunner();
        DbHelper.register();
        Connection conn = DbHelper.getConn();
        List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class),params);
        for (DateTest date : dates) {
            System.out.println(date.toString());
        }
        System.out.println("------------------------------------------------------");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Quick Start

源碼以及打包好的jar文件,已上傳至我的GitHub上面了。希望有興趣的朋友能一起研究一下,讓我們一起為開源奉獻自己的光和熱吧。

點擊獲取源碼及jar

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

自制DbHelper實現自動化數據庫交互