JFinal 2.1 發布,用 JFinal 開發,就這么定了!
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開發,就這么定了!
來自: http://www.oschina.net/news/69461/jfinal-2-1-released