一個比Dbutils更小巧、更好用的持久化工具

tecentID29C38發表於2015-05-17
從JDBC的規範上看,其對資料訪問層有相當簡潔的抽象:1、連線(connection) 2、語句(statement)、3結果集(result set),我們對資料庫做的事情無非:連線資料庫,執行語句,拿到結果。因此,持久化工具的目的不言自明:進一步簡化連線的管理、語句的執行、結果集提取等操作。

Memory在設計與實現上,都借鑑了Dbutils,其相對於hibernate,mybatis這些龐然大物,已經是一個極其小巧的工具。 但是Memory的類和介面更少(不超過10個),體積更小(只有二十幾K),數目和體積都約為dbutils的1/3,卻新增了非常實用的功能:

a) 將簡單的POJO物件直接持久化到資料庫中;
b) 列印執行時出錯的SQL語句,其可以直接複製到資料庫客戶端上進行除錯;
c) 直截了當的分頁查詢。

開源中國上的連結

GitHub上的連結


程式碼示例:

public static void testCrud() throws SQLException {
     /**
     * 建立一條記錄
     */
     Product product = new Product();
     product.setName("apple");
     product.setStock(10);
     product.setStatus(true);
     product.setCreatedDate(new Date());
     System.out.print("入庫之前Product沒有ID:");
     System.out.println(product);
     memory.create(Product.class, product);

     /**
     * 讀取這條記錄
     */
     product = memory.read(Product.class, product.getId());
     System.out.print("使用CRUD的read方法讀取:");
     System.out.println(product);

     /**
     * 換一種方式讀取
     */
     product = memory.query("select * from product where id = ?",
         new BeanHandler<Product>(Product.class), product.getId());
     System.out.print("使用CQRS的query方法讀取:");
     System.out.println(product);

     /**
     * 更新這條記錄
     */
     product.setStock(15);
     product.setStatus(true);
     product.setCreatedDate(new Date());
     memory.update(Product.class, product);
     // 檢視結果
     product = memory.read(Product.class, product.getId());
     System.out.print("檢視更新結果:");
     System.out.println(product);

     /**
     * 刪除一條記錄
     */
     memory.delete(Product.class, product.getId());
     // 檢視結果
     product = memory.read(Product.class, product.getId());
     System.out.print("檢視刪除結果:");
     System.out.println(product);
 }
<p class="indent">

[該貼被tecentID29C38於2015-05-17 21:16修改過]

[該貼被tecentID29C38於2015-05-17 21:16修改過]

相關文章