分享一個本身寫的JFinal的BaseController (1)java
通過@JFinal 的提示,改進了下BaseControllerspa
================================.net
3月10號又有改進code
分享一個本身寫的JFinal的BaseController (3) blog
================================get
直接是上 BaseController 的代碼io
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import com.jfinal.core.Controller; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; public class BaseController<M extends Model<M>> extends Controller { /** * 獲取M的class * * @return M */ @SuppressWarnings("unchecked") public Class<M> getClazz() { Type t = getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) t).getActualTypeArguments(); return (Class<M>) params[0]; } /** * 通用分頁查找 */ public void getByPage() { Page<Record> list = Db.paginate(getParaToInt("pageNumber"), getParaToInt("pageSize"), "select *", "from " + getClazz().getSimpleName() + " order by id desc"); renderJson(list); } /** * 通用查找所有 */ public void getAll() { renderJson(Db.find("select * from " + getClazz().getSimpleName() + " order by id asc;")); } /** * 通用根據id查找 */ public void getById() { renderJson(Db.findById(getClazz().getSimpleName(), getParaToInt("id"))); } /** * 通用新增 * * @throws Exception */ public void save() throws Exception { renderText(getModel( ((Model<?>) Class.forName(getClazz().getName()).newInstance()) .getClass()).save() + ""); } /** * 通用修改 * * @throws Exception */ public void update() throws Exception { renderText(getModel( ((Model<?>) Class.forName(getClazz().getName()).newInstance()) .getClass()).update() + ""); } /** * 通用刪除 * * @throws Exception */ public void delete() throws Exception { renderText(getModel( ((Model<?>) Class.forName(getClazz().getName()).newInstance()) .getClass()).delete() + ""); }
而後 Controller 的代碼以下class
public class CardController extends BaseController<Card> { }
這樣 CardController 就自動有了基本的增刪改查功能了!import