JFinal 2.1 發布,用 JFinal 開發,就這么定了!

jopen 8年前發布 | 19K 次閱讀

JFinal 2.1 將帶給大家超過60項增強與改進,此次升級核心目的,一是全面解救傳統SSH開發者,強力推動這些早已累成狗的工程師轉投 JFinal 懷抱,二是與老用戶建立更深的情感,答謝你們長久以來對JFinal的支持!

作為傳統SSH開發者全面轉投JFinal懷抱的版本,JFinal 2.1必須帶給SSH用戶全新的足夠消除他們顧忌的極速化功能,傳統JavaBean的回歸 必不可少,但不能是簡單的回歸,必須還要完全擁有 JFinal 所有優勢,并且還要徹底消除所帶來的體力勞動。

一、極速合體 Model與JavaBean

JFinal 2.1引入BaseModel設計實現Model與JavaBean的合體,在保持了Model類干凈清爽的同時,極速擁有JavaBean所有優勢,并且極速響應數據表的任何變化。以下是示例代碼:

// 生成 BaseModel
new Generator(...).generate();

// 依然清爽的 Account Model
public class Account extends<BaseAccount> {

}

// setter、getter 完美回歸
public void actoin() {
  new Account().setUserName(userName);
}

BaseModel承載 getter、setter,留給 Model一個清爽的世界,也令表結構變化后的重構安全放心,絲毫不打擾Model中的代碼。

以上代碼展示,只需要使用Generator一步即可完成合體工作,在保持Model所有優勢的前提下,getter、setter實現完美回歸。

小木學堂相關視頻教程分享:
http://www.tudou.com/programs/view/sb4U1aWCNks/
http://pan.baidu.com/s/1c1tkmUO

二、極速化table與Model自動映射,極速化主鍵/復合主鍵自動配置

JFinal 2.1引入MappingKit設計,實現table與Model的極速映射,主鍵/復合主鍵的極速配置,完全不需要人工干預,如下是生成的MappingKit.java的代碼:

// MappingKit 自動映射,無需人工干預
public class _MappingKit {
  public static void mapping(ActiveRecordPlugin arp) {
   arp.addMapping("account", "id", Account.class);
   arp.addMapping("order", "id,serialId", Order.class);
  }
}

// 在ActiveReocrdPlugin 中使用MappingKit,JFiinalConfig中無比清爽
public void configPlugin(Plugins me) {
  ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
  me.add(arp);  
  _MappingKit.mapping(arp);
}

    無論你的項目是幾百張表還是幾千張表,搞定映射都在彈指一揮間!

三、極速化驗證碼支持

    值此12306又是一年吐槽之際,JFinal 2.1特別針對驗證碼進行了極速化的增強,將驗證碼提升為Controller一等公民,在Controller之中直接調用 renderCapthca()極速渲染。新版本實現不僅顏值超高,安全性更好,而且使用方式更加極速,無論是生成還是驗證全然一行代碼的事:

// 極速渲染超高顏值驗證碼
public void edit() {
  renderCaptcha();
}

// 極速驗證那都不是個事
public void save() {
  validateCaptcha(field);
}

在保證高顏值,極速用法的同時,新版驗證碼還使用了隨機字體、隨機文字旋轉、隨機背景圓圈、隨機曲線,httpOnly等多種安全化處理。

四、極速化json與Object互轉,極速化json服務端

JFinal 2.1新增獨立json處理模塊,引入更加專業化的json實現,為開發高性能json服務應用提供強力支持。引入Json、IJsonFactory抽象,并提供jfinal、jackson、fastjson三種實現,可隨心選擇三種實現之一:

// json與 object極速互轉
public void action() {
  Account account = Json.getJson().parse(jsonStr);
  jsonStr = Json.getJson().toJson(account);
}

// 切換Json實現
public void configConstant(Constants me) {
 me.setJsonFactory(new JacksonFactory());
}

也可通過擴展抽象自由切換心愛的json工具,只需如下兩步:

// 自定義 Json實現
public class MyJson extends Json {
  public String toJson(Object) {
    ...
  }
  public <T> T parse(String json, Class<?> type) {
    ...
  }
}

// 切換成自定義Json實現
public void configConstant(Constants me) {
 me.setJsonFactory(new IJsonFactory() {
   public Json getJson() {
     return MyJson();
 });
}

五、極速化的純API服務支持

增強getModel(),可通過getModel(modelClass, ""),使客戶端免去輸入modelName前綴,方便純API服務端項目的開發,方便支持純json手機服務端應用。

添加 getBean()方法支持傳統JavaBean的獲取,尤其適用于合體后的Model獨立工作于無數據源連接的應用。

添加 IXmlRenderFactory,方便支持XML服務端應用,默認使用Freemarker實現XmlRender。

六、極速化數據庫批量操作支持,極速化pagnate增強

添加 Db.batchSave(List<Model>) Db.batchUpdate(List<Model>) 避免拼寫繁雜的 insert into及 update 類 sql,極速批量保存更新model。添加 Db.batchUpdate()  Db.batchSave(),媽媽再也不擔心俺不會寫sql批量插入和更新了:

public class Happy {
  public void justDoIt(List<Account> accountList) {
    Db.batchSave(accountList);
    Db.batchUpdate(accountList);
  }
}

老版本中的sqlSelect與sqlExceptSelect兩個參合體為一個整體的sql參數,并兼容老版本分而參數,更省心的 sql,
支持 group by 嵌套,以及group by 分頁僅有一條記錄的情況。

public void justForFun() {
  Db.paginate(1, 10, "select * from happy where x>?", x);
}

七、極速化AOP增強

添加類級的@Clear注解,便捷刪除global、inject 級攔截器。攔截器管理模塊全面增強,重構合并控制層與業務層攔截器管理邏輯,對除 Mothod級的攔截器棧全部提供緩存支持,讓 AOP 更加極速,代碼量更小。

ONE MORE THING:值此SSH用戶全面轉投JFinal之際,特推出JFinal最佳實踐之JFinal CMS項目,實現更大粒度的極速開發,狂掃下方二維碼,JFinal官方公眾號粉絲再增加5000立即放出源碼:

JFinal 2.1 發布,用 JFinal 開發,就這么定了!

JFinal 2.1來襲,用JFinal開發,就這么定了!

來自: http://www.oschina.net/news/69461/jfinal-2-1-released

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!