中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

jSqlBox 2.0.2 發(fā)布,Java 持久層工具

2018-08-01    來源:oschina

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
jSqlBox

jSqlBox2.0.2版發(fā)布,主要改進:

  • 增加一批實體CURD方法;

  • 增加"按實體樣板"查詢功能;

  • 實體關聯(lián)查詢如果一條SQL寫不完,可以分多次查詢。

jSqlBox是一款基于DbUtils內核開發(fā)的全功能數據庫持久層工具,同時具備底層JDBC操作和上層ORM實體CURD、關聯(lián)查詢功能,具體功能大家可以看用戶手冊,就不多介紹了。下面只是列一下jSqlBox的獨門武器,看看它和其它持久層工具相比有哪些特殊之處:

1. 自帶DDL生成功能,支持幾乎所有數據庫(70多種數據庫方言)。示例:

        SqlBoxContext ctx = new SqlBoxContext(dataSource);
        String[] ddls = ctx.toCreateDDL(User.class);

2. 無接口、無實現、無DAO、無配置,用最少的文件和語法完成最多的功能:
下圖是在完成同樣的性能測試時,jSqlBox和其它DAO工具文件數量的對比:

當實體多達上百個時,想一想jSqlBox能省多少事?  
當然性能也是不錯的。見下圖(這個測試僅針對實體CRUD):

3. 最簡潔的ORM實體關聯(lián)查詢:
下圖從User到Privilege之間經過了兩個多對多關聯(lián),在jSqlBox中這不是問題:

一行代碼就可以收工了:

List<User> users = ctx.entityAutoNet(User.class, UserRole.class, Role.class, RolePrivilege.class, Privilege.class).pickEntityList(User.class);

沒有配置文件、沒有XML、沒有模板,就這么簡單。

4. 樹結構實體關聯(lián)查詢也是小菜,兩行代碼解決問題: 

EntityNet net = ctx.iQuery(new EntityNet(),TreeNode.class, TreeNode.class, alias("t", "p"), give("p", "t", "parent"), give("t", "p", "childs"), "select t.**, t.pid as p_id from treenodetb t");
TreeNode root = net.pickOneEntity("t", "A");

對于無遞歸查詢出子樹,jSqlBox也發(fā)明出了一種新的深度樹存儲方案,詳見用戶手冊,這可以算是jSqlBox項目的副產品。

5. 無處不在的動態(tài)SQL,所有條目都可以當作參數傳遞,包括SqlBoxContext老大本身:

ctx.iExecute("insert into users (", //
   " name ,", param("Sam"), //一個參數寫一行
   notNull("age,", user.getAge()), //notNull方法的第二個參數為null時,這一項將不會添加到SQL中
    " address ", param("Canada"), //
 ") ", valuesQuestions()); //自動根據參數個數補上 values(?,?...?)片段

//ActiveRecord的方法也接收亂七八糟的參數,來者不拒
new User(100,"Tom","China").update(ctx2, " and age>?", param(5), new PrintSqlHandler());

6. 在Dao層具備主從分離、分庫分表功能,可以不依賴第三方Sharding工具:

public static class User extends ActiveRecord<User > {
   @ShardTable({ "MOD", "8" })
   @Snowflake
   @Id
   private Long id; 
 
   @ShardDatabase({ "MOD", "7" })
   @Id
   @Snowflake
   private Long databaseId;
...
}
//自動Sharding, 強制主表操作
User u1 = new User ().put("name", "Tom").insert(USE_MASTER);

7. 還有其它一些特點就不詳細介紹了,只是簡單提一下:
   jSqlBox不重新發(fā)明SQL語法,即使是按樣板查詢,也不重新發(fā)明SQL,好學。
   jSqlBox支持動態(tài)配置;
   jSqlBox兼容DbUtils;
   jSqlBox自帶聲明式事務,也可以使用Spring事務。
   jSqlBox可以切換模板;
   jSqlBox有很多SQL寫法,包括鏈式寫法和支持重構的Lambda語法等;
   jSqlBox有批處理、緩存、日志、攔截器,但也有黑科技, 如抽象類實例化、多行SQL文本支持。
   jSqlBox架構優(yōu)秀,模塊式架構,jSqlBox模塊的源碼只有30多個文件。
   jSqlBox無配置文件、啟動快,0秒啟動。

標簽: 代碼 數據庫

版權申明:本站文章部分自網絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Apache Log4j 2.11.1 發(fā)布,流行的 Java 日志組件

下一篇:白鷺引擎推出 5.2.6 穩(wěn)定版,集中性修復數個 BUG