1. 程式人生 > >JFinal框架學習-----Db+Record

JFinal框架學習-----Db+Record

在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物件的時候,我們需要自己構造。