在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