JFinal-學習筆記(下)

第五章 ActiveRecord
ActiveRecord是JFinal最核心的組成部分。
一、 ActiveRecord是做爲JFinal的plugin存在的,須要在JFinalConfig中的configPlugin中配置

須要在Plugin配置中,配置c3p0插件和ActiveRecordPlugin插件 兩個信息
ActiveRecordPlugin 還要有Model類和數據庫表的映射信息。
該映射默認表名的主鍵名爲 id,若是主鍵名是別的,則須要手動指定。
二、Model
public class User extends Model<User>{
public static final User dao = new User();
}
dao對象是全局共享,只能用於數據庫查詢,不能用於數據承載對象。數據承載對象須要使用 new User().set(...)來實現
無需set/get,無需xml,無需annotationweb

一些常見的方法
new User().set("name","James").save();//新建對象並保存
getModel(User.class).save();//獲取前臺傳入的model對象,並保存
User.dao.deleteById(getParaToInt());//獲取前臺傳入的userid,並刪除指定對象
List<User> users = User.dao.find("select * from user where age>18");//獲取大於18歲的User集合
getModel(User.class).update();//獲取前臺傳入的model對象(須要有主鍵信息),並更改
三、JavaBean與Model合體
JFinal 能夠自動生成 Model、BaseModel、MappingKit、DataDictionary四類文件
四、JFinal還有Db+Recod模式
Record類 至關於一個通用的Model

Record user = new Record().set("name","James");
Db.save("user",user);

Db.deleteById("user",25);
五、聲明式事務
ActiveRecord支持聲明式事務,須要使用ActiveRecord提供的攔截器來實現。

六、Cache
在ehcache.xml中配置cache後,便可在ActiveRecord中使用,如
List<Blog> blogList = Blog.dao.findByCache("cacheNmae","key","select * from blog");
七、 ActiveRecord 支持多個數據庫的Dialect
arp.setDialect(new MysqlDialect());
八、 表關聯
一是直接使用sql獲得關聯數據。
二是在model中添加獲取關聯數據的方法

public class User extends Model<User>{
public static final User dao = new User();

public List<Blog> getBlogs(){
return Blog.dao.find("select * from blog where user_id=?",get("id"));
}
}
九、 複合主鍵
在映射時,指定複合主鍵名稱,使用時同時指定複合主鍵值便可。
Db+Record模式,直接使用便可
Db.findById("user_role","roleId,userId",123,345);
十、針對Oracle
注意屬性名的大小寫、自增主鍵
十一、多數據源支持
ActiveRecordPlugin可同時支持多數據源、多方言、多緩存、多事務級別
對每一個ActiveRecordPlugin指定一個configName便可

在使用時,使用use方法,指定數據源便可
Blog b = Blog.me.findById(123);
b.use("backupDatabase").save();
十二、非web環境下使用ActiveRecord
調用ARP插件的start方法後,也可以使用,ARP依賴的其餘插件一樣須要調用start方法
第六章 EhCachePlugin
是JFinal集成的緩存插件
一、 須要在JFinalConfig中配置
plugin.add(new EhCachePlugin());
二、 CacheInterceptor
使用註解,並在ehcache.xml中配置一actionKey命名的cache,如 <cache name="/blog/list" ...>,"/"不能夠省略
也可以使用 @CacheName("blogList") 用來取代默認的actionKey做爲actionNmae;
三、EvictInterceptor
根據CacheName註解自動清除緩存。
四、CacheKit
緩存操做工具類
五、ehcache.xml
見EhCache官方文檔
第七章 RedisPlugin
一、一樣須要在 configPlugin中配置
二、Redis與Cache
Redis對象經過 use()方法來獲取到Cache對象。
三、非web環境使用RedisPlugin
引入jfinal.jar,多調用一下 redisPlugin.start()便可
第八章 Validator
一、Validator是一個攔截器,配置方式與攔截器徹底同樣
protected void validator(Controller c) 能夠調用validateXxx(..)系列方法來進行後端校驗
protected void handleError(Controller c) 能夠調用c.keepPara(..)方法來將提交的值傳回頁面,c.render(..)方法來返回響應的頁面。
keepModel方法能夠保持住用戶輸入過的數據。
二、配置示例

public class UserController extends Controller{
@Before(LoginValidator.class)
public void login(){
//code
}
}
第九章 國際化

第十章 FreeMaker
JFinal默認使用FreeMaker做爲View
如須要使用jsp做爲默認視圖,須要 在 configConstant方法中配置
cons.setViewType(ViewType.JSP);
二、示例
<table>
<#list userList as user>
<tr>
<td>${user.name}</td> //表中的列名
</tr>
</#list>
</table>
第十一章 JFinal架構
JFinalFilter——Handler1-N——ActionHandler(Interceptor-Controller-Render)

Pluginredis

相關文章
相關標籤/搜索