ActiveRecord 是JFinal 最核心的組成部分之一,通過ActiveRecord 來操作數據庫,將極大地減少代碼量,極大地提升開發效率。
一、ActiveRecordPlugin
ActiveRecord是作爲JFinal的插件而存在的。需要在配置文件中配置。
<span style="font-size:18px;">public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) {
C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://localhost/db_name",
"userName", "password");
me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
me.add(arp);
arp.addMapping("user", User.class);
arp.addMapping("article", "article_id", Article.class);
}
} </span>
C3p0Plugin 與ActiveRecordPlugin,前者是 c3p0數據源插件,後者是 ActiveRecrod支持插件。。ActiveReceord 中定義了 addMapping(String tableName, Class<? extends Model> modelClass>)方法,該方法建立了數據庫表名到 Model的映射關係。
另外,以上代碼中 arp.addMapping(“user”, User.class),表的主鍵名爲默認爲“id”,如果主鍵名稱爲 “user_id”則需要手動指定,如:arp.addMapping(“user”, “user_id”, User.class)。
二、Model
Model是ActiveRecord 中最重要的組件之一,它充當MVC 模式中的Model 部分。
Model的常用用法:
<span style="font-size:18px;">// 創建name屬性爲James,age屬性爲25的User對象並添加到數據庫
new User().set("name", "James").set("age", 25).save();
// 刪除id值爲25的User
User.dao.deleteById(25);
// 查詢id值爲25的User將其name屬性改爲James並更新到數據庫
User.dao.findById(25).set("name", "James").update();
// 查詢id值爲25的user, 且僅僅取name與age兩個字段的值
User user = User.dao.findById(25, "name, age");
// 獲取user的name屬性
String userName = user.getStr("name");
// 獲取user的age屬性
Integer userAge = user.getInt("age");
// 查詢所有年齡大於18歲的user
List<User> users = User.dao.find("select * from user where age>18");
// 分頁查詢年齡大於18的user,當前頁號爲1,每頁10個user
Page<User> userPage = User.dao.paginate(1, 10, "select *", "from user
where age > ?", 18); </span>
Model無需定義屬性,無需定義 getter、setter 方法,無需 XML配置,極大的降低了代碼量。