大家好,我是為廣大程式設計師兄弟操碎了心的小編,每天推薦一個小工具/原始碼,裝滿你的收藏夾,每天分享一個小技巧,讓你輕鬆節省開發效率,實現不加班不熬夜不掉頭髮,是我的目標!
今天小編推薦一款Java ORM框架——Bee,Bee 是一個簡單,易用,功能強大,開發速度快,編碼少的 JAVA ORM 框架。
Bee開發速度快、簡單、自動高效且具有人工智慧(AI)特性!它的編碼複雜度是O(1),不管操作多少張表,都可以不需要寫額外的Dao程式碼。Bee同時支援物件導向和自定義SQL兩種方式,簡單場景和複雜場景都可以應用。
Bee複雜查詢支援向物件方式,分頁查詢效能更高,一級快取即可支援個性化優化;具有分散式特性。高階要求,還可以方便自定義SQL語句。
如果說Mybatis在Hibernate之後不是重複造輪子,那Bee在Hibernate和Mybatis之後也不會是重複造輪子!
功能特點
- 1.介面簡單,使用方便。Suid介面中對應SQL語言的select,update,insert,delete操作提供4個同名方法。
- 2.使用了Bee,你可以不用再另外編寫dao程式碼,直接呼叫Bee的api即可完成對DB的操作。
- 3.約定優於配置:Javabean沒有註解,也不需要xml對映檔案,只是純的Javabean即可,甚至get,set方法不用也可以。
- 4.智慧化自動過濾null和空字串,不用再寫判斷非空的程式碼。
- 5.動態/任意組合查詢條件,不需要提前準備dao介面,有新的查詢需求也不用修改或新增介面。
- 6.支援原生SQL排序, 原生語句分頁(不需要將全部資料查出來)。
- 7.支援直接返回Json格式查詢結果; 鏈式程式設計。
- 8.支援事務、for update,支援批處理操作,支援原生SQL(自定義sql語句),支援儲存過程。
- 9.支援只查詢一部分欄位。
- 10.支援物件導向方式複雜查詢、多表查詢(無n+1問題; 支援:一對一,一對多,多對一,多對多)。
- 11.一級快取,概念簡單,功能強大;一級快取也可以像JVM一樣進行細粒度調優;智慧快取,支援更新配置表,不用重啟。
- 12.表名與實體名、欄位名與屬性名對映預設提供多種實現,且支援自定義對映規則擴充套件。
- 13.多種DB支援輕鬆擴充套件(MySQL,MariaDB,Oracle,H2,SQLite,PostgreSQL等直接可用)。
- 14.無第三方外掛依賴;可零配置使用。
- 15.提供表對應的Javabean自動生成工具,Javaweb後端程式碼根據模板自動生成;能列印非佔位符的可執行sql,方便除錯。
- 16.支援讀寫分離一主多從, 僅分庫等多資料來源模式。
- 17.分散式環境下生成連續單調遞增(在一個workerid內),全域性唯一數字id;提供自然簡單的分散式主鍵生成方式。
- 18.支援同庫分表,動態表名對映。
- 19.效能好:接近JDBC的速度;檔案小:Bee V1.8 jar 僅217k。
應用示例
import java.math.BigDecimal;
import java.util.List;
import org.teasoft.bee.osql.Suid;
import org.teasoft.honey.osql.core.BeeFactory;
/*
* 查,改,增,刪 Suid (select,update,insert,delete)例項
*/
public class SuidExam {
public static void main(String[] args) {
Suid suid=BeeFactory.getHoneyFactory().getSuid();
//需要先生成相應的Javabean
Orders orders1=new Orders();
orders1.setId(100001L);
orders1.setName("Bee(ORM Framework)");
//1:select查詢例項
//預設不處理null和空字串.不用再寫一堆的判斷;其它有值的欄位全部自動作為過濾條件
List<Orders> list1 =suid.select(orders1); //select
for (int i = 0; i < list1.size(); i++) {
System.out.println(list1.get(i).toString());
}
//2:update更新例項
orders1.setName("Bee--ORM Framework");
//預設只更新需要更新的欄位. 過濾條件預設只用id欄位,其它需求可用SuidRich中的方法.
int updateNum=suid.update(orders1); //update
System.out.println("update record:"+updateNum);
Orders orders2=new Orders();
orders2.setUserid("bee");
orders2.setName("Bee(ORM Framework)");
orders2.setTotal(new BigDecimal(91.99));
orders2.setRemark(""); //empty String test
//3:insert 插入例項
int insertNum=suid.insert(orders2); //insert
//預設不處理null和空字串.不用再寫一堆的判斷;其它有值的欄位全部自動插入資料庫中.
//方便結合DB插值,如id自動增長,由DB插入;createtime由DB預設插入
System.out.println("insert record:"+insertNum);
//4:delete 刪除例項
//預設不處理null和空字串.不用再寫一堆的判斷;其它有值的欄位全部自動作為過濾條件
//int deleteNum=suid.delete(orders2); //delete
//System.out.println("delete record:"+deleteNum);
}
}
複製程式碼
結尾
本期就分享到這裡,我是小編南風吹,專注分享好玩有趣、新奇、實用的開源專案及開發者工具、學習資源!希望能與大家共同學習交流,歡迎關注我的公眾號**【Github導航站】**。