JFinal-學習筆記(下)


第五章 ActiveRecord
ActiveRecord是JFinal最核心的組成部分。
1、 ActiveRecord是作為JFinal的plugin存在的,需要在JFinalConfig中的configPlugin中配置

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

一些常見的方法
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對象(需要有主鍵信息),並更改
3、JavaBean與Model合體
JFinal 可以自動生成 Model、BaseModel、MappingKit、DataDictionary四類文件
4、JFinal還有Db+Recod模式
Record類 相當於一個通用的Model

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

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

6、Cache
在ehcache.xml中配置cache后,即可在ActiveRecord中使用,如
List<Blog> blogList = Blog.dao.findByCache("cacheNmae","key","select * from blog");
7、 ActiveRecord 支持多個數據庫的Dialect
arp.setDialect(new MysqlDialect());
8、 表關聯
一是直接使用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"));
}
}
9、 復合主鍵
在映射時,指定復合主鍵名稱,使用時同時指定復合主鍵值即可。
Db+Record模式,直接使用即可
Db.findById("user_role","roleId,userId",123,345);
10、針對Oracle
注意屬性名的大小寫、自增主鍵
11、多數據源支持
ActiveRecordPlugin可同時支持多數據源、多方言、多緩存、多事務級別
對每個ActiveRecordPlugin指定一個configName即可

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

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

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

Plugin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM