在JFinal中,除了Model能夠對數據庫進行操做以外,JFinal還提供了Db+Record模式來對數據庫進行操做。html
Record至關於一個通用的Model,不一樣的是Record只可以承載數據,須要藉助DB類來進行數據庫的操做。而Model類既可承載數據也能夠對數據庫進行操做。(Record類裏只使用Map來存儲數據庫裏每一列的字段,DB類封裝了數據庫的經常使用操做:save,update,delete,find/query。java
下面,咱們來看一下Db+Record的一些使用方法:數據庫
package com.controller; import com.jfinal.core.Controller; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; import com.model.Blog; import java.util.List; import java.util.Map; public class RecordController extends Controller{ /** * 查詢全部blog */ public void index(){ List<Record> bloglist= Db.find("select * from blog"); setAttr("bloglist",bloglist); renderJsp("BlogList.jsp"); } /** *根據id刪除blog */ public void deleteBlog(){ Db.deleteById("blog",getParaToInt("id")); redirect("/record"); } /** * 添加blog */ public void saveBlog(){ Record blogs=new Record().set("title",getPara("title")).set("content",getPara("content")).set("category",getPara("category")); Db.save("blog","id",blogs); redirect("/record"); } public void edit(){ Integer id=getParaToInt("id"); if(id !=null && id>0){ Record blog=Db.findById("blog",id); setAttr("blog",blog); render("blogUpdate.html"); } } /** * 更新 */ public void updateBlog(){ Record record=new Record(); record.set("id",getPara("blog.id")); record.set("title",getPara("blog.title")); record.set("content",getPara("blog.content")); Db.update("blog",record); redirect("/record"); } /** * 分頁查詢 */ public void paginate(){ Integer pageNumber=getParaToInt("pageNumber"); if(pageNumber==null){ pageNumber=1; } Page<Record> page=Db.paginate(pageNumber,5,"select *","from blog"); setAttr("blogPage",page); renderJsp("page.jsp"); } }
在updateBlog()方法中,咱們能夠看出,與使用Model模式相比,Model爲咱們提供了getModel()方法來獲取request中的數據,而Db+Record模式並無這樣的方法,所以,當咱們須要得到一個Record對象的時候,咱們須要本身構造。jsp