一個比Dbutils更小巧、更好用的持久化工具
從JDBC的規範上看,其對資料訪問層有相當簡潔的抽象:1、連線(connection) 2、語句(statement)、3結果集(result set),我們對資料庫做的事情無非:連線資料庫,執行語句,拿到結果。因此,持久化工具的目的不言自明:進一步簡化連線的管理、語句的執行、結果集提取等操作。
Memory在設計與實現上,都借鑑了Dbutils,其相對於hibernate,mybatis這些龐然大物,已經是一個極其小巧的工具。 但是Memory的類和介面更少(不超過10個),體積更小(只有二十幾K),數目和體積都約為dbutils的1/3,卻新增了非常實用的功能:
a) 將簡單的POJO物件直接持久化到資料庫中;
b) 列印執行時出錯的SQL語句,其可以直接複製到資料庫客戶端上進行除錯;
c) 直截了當的分頁查詢。
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修改過]
相關文章
- 比UIWebView更強大好用的WKWebViewUIWebView
- 一個比 Redis 效能更強的資料庫Redis資料庫
- 教你如何讓Redis更持久 !Redis
- 一個比想象中更騷氣的圓-svg實現SVG
- iOS好用的分類工具 讓開發更簡單 WHKitiOS
- 小推理:React18比老版React更優秀的一個地方React
- 一個出於ARouter,卻更輕便簡潔的Route工具
- Python 3.8新功能盤點:更快,更簡潔,更一致,更現代化Python
- Flutter 比 React Native 更優秀的五個理由FlutterReact Native
- Canvas畫圖-一個比想象中更騷氣的圓(漸變圓環)Canvas
- 基於 Dapper 的一個 DbUtilsAPP
- Routinebot - 一款小巧的GUI自動化測試工具GUI
- flutter 持久化儲存-----資料庫sqflite|8月更文挑戰Flutter持久化資料庫
- 一個比微博熱搜更適合吃瓜的平臺——即時熱榜
- 外媒:一加手機6比iPhone X更值得購買的10個理由iPhone
- 比包月更靈活、比按量更划算,阿里雲推出全新售賣模式阿里模式
- 一個更適合Java初學者的輕量級開發工具:BlueJJava
- 讓Docker功能更強大的10個開源工具Docker開源工具
- Mysql 一個比較好用的函式MySql函式
- 比歐洲盃還火的Linux工具 讓開發更簡單Linux
- 有哪一種程式語言比其他的更安全嗎?
- 像FIFA一樣踢球的AI,比打遊戲更強嗎?AI遊戲
- Podman:一個更安全的執行容器的方式
- 16 寸MacBook Pro比14 寸風扇更強大,更耐用Mac
- 想讓Apple Watch續航更持久?這個錶帶輕鬆搞定APP
- 比裁員更侮辱人的事發生了。。。
- 一個好用的畫圖工具 excalidraw
- 用proxy實現一個更優雅的vueVue
- 如何設計一個更通用的查詢介面
- 使一個新的MySQL安裝更安全(轉)MySql
- 比MacBook Air更輕更薄 小米筆記本終於釋出!MacAI筆記
- Cydia介面風格視覺更新 更扁平化更現代化視覺
- 更好用 更簡單的Java快取框架 jscacheJava快取框架JS
- TCP 和 UDP,哪個更勝一籌TCPUDP
- 從原始碼入手詳解ReentrantLock,一個比synchronized更強大的可重入鎖原始碼ReentrantLocksynchronized
- Swift 4.0 正式釋出,更快更相容更好用Swift
- “技術轉產品”比產品更噁心的幾個點
- iOS 10和9.3.3對比影片哪個更值得升級iOS