JFinal框架學習-----Db+Record
阿新 • • 發佈:2018-11-25
在JFinal中,除了Model可以對資料庫進行操作之外,JFinal還提供了Db+Record模式來對資料庫進行操作。
Record相當於一個通用的Model,不同的是Record只能夠承載資料,需要藉助DB類來進行資料庫的操作。而Model類既可承載資料也可以對資料庫進行操作。(Record類裡只使用Map來儲存資料庫裡每一列的欄位,DB類封裝了資料庫的常用操作:save,update,delete,find/query。
下面,我們來看一下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物件的時候,我們需要自己構造。