jfinal整合layui做增删改查
整合前端交互
新增页面
查看功能
删除功能
配置类
package com.demo.common;
import com.demo.common.model._MappingKit;
import com.demo.index.IndexController;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;
import com.user.UserController;
/**
* 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法
* 详见 JFinal 俱乐部: http://jfinal.com/club
*
* API引导式配置
*/
public class DemoConfig extends JFinalConfig {
/**
* 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
*
* 使用本方法启动过第一次以后,会在开发工具的 debug、run config 中自动生成
* 一条启动配置,可对该自动生成的配置再添加额外的配置项,例如 VM argument 可配置为:
* -XX:PermSize=64M -XX:MaxPermSize=256M
*/
/*public static void main(String[] args) {
*//**
* 特别注意:Eclipse 之下建议的启动方式
*//*
JFinal.start("WebRoot", 80, "/", 5);
*//**
* 特别注意:IDEA 之下建议的启动方式,仅比 eclipse 之下少了最后一个参数
*//*
// JFinal.start("WebRoot", 80, "/");
}*/
/**
* 配置常量
*/
public void configConstant(Constants me) {
// 加载少量必要配置,随后可用PropKit.get(...)获取值
PropKit.use("a_little_config.txt");
me.setDevMode(PropKit.getBoolean("devMode", false));
}
/**
* 配置路由
*/
public void configRoute(Routes me) {
me.add("/", IndexController.class, "/index"); // 第三个参数为该Controller的视图存放路径
me.add("/user", UserController.class);
}
public void configEngine(Engine me) {
me.addSharedObject("ctx", JFinal.me().getContextPath());
me.addSharedFunction("/common/_layout.html");
me.addSharedFunction("/common/_paginate.html");
}
public static DruidPlugin createDruidPlugin() {
return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
}
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
// 配置C3p0数据库连接池插件
DruidPlugin druidPlugin = createDruidPlugin();
me.add(druidPlugin);
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
// 所有映射在 MappingKit 中自动化搞定
_MappingKit.mapping(arp);
me.add(arp);
}
/**
* 配置全局拦截器
*/
public void configInterceptor(Interceptors me) {
}
/**
* 配置处理器
*/
public void configHandler(Handlers me) {
}
}
用户控制类
package com.user;
import java.util.Date;
import com.demo.common.model.User;
import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.json.Json;
import com.jfinal.plugin.activerecord.Page;
/**
* 用户管理控制类
* @author Jack
*
*/
@Before(UserInterceptor.class)
public class UserController extends Controller{
static UserService service = new UserService();
public void index(){
setAttr("userPage", service.paginate(getParaToInt(0,1), 10));
//render("user.html");
render("userList.html");
}
public void add(){
}
public void addUser(){
setAttr("islook", "0");
}
/**
* save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中,
* 并要对数据进正确性进行验证,在此仅为了偷懒
*/
@Before(UserValidator.class)
public void save(){
Date day=new Date();
User user = new User();
user.set("createTime", day).set("name", getPara("user.name")).set("age", getPara("user.age"))
.set("address", getPara("user.address")).set("sex", getPara("user.sex")).set("password", getPara("user.password"))
.set("city", getPara("user.city")).save();
redirect("/user");
}
public void edit(){
setAttr("user", service.findById(getParaToInt()));
}
/**
* save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中,
* 并要对数据进正确性进行验证,在此仅为了偷懒
*/
@Before(UserValidator.class)
public void update(){
getModel(User.class).update();
redirect("/user");
}
public void delete(){
service.deleteById(getParaToInt());
redirect("/user");
}
/**
* 页面list
*/
public void page(){
int page = getParaToInt("page");
int limit = getParaToInt("limit");
Page<User> user = service.paginate(getParaToInt(0,page), limit);
String jsonList = Json.getJson().toJson(user.getList());
String jsons= "{\"code\":\"0\",\"msg\":\"\",\"count\":\""+user.getTotalRow()+"\",\"data\":"+jsonList+"}";
renderJson(jsons);
}
public void deleteUser(){
service.deleteById(getParaToInt());
System.out.println("删除"+getParaToInt()+"成功");
redirect("/user");
}
/**
* 修改 或者查看
*/
public void editUser(){
int id = getParaToInt("id");
String islook = "0";
if(null!= getPara("look") && getPara("look").equals("1")){
islook="1";
}
setAttr("islook", islook);
setAttr("user", service.findById(id));
}
@Before(UserValidator.class)
public void updateUser(){
getModel(User.class).update();
redirect("/user");
}
}
package com.user;
import com.demo.common.model.User;
import com.jfinal.core.Controller;
import com.jfinal.validate.Validator;
/**
* * 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法
* 详见 JFinal 俱乐部: http://jfinal.com/club
*
* UserValidator.
* @author Jack
*
*/
public class UserValidator extends Validator{
/**
* 验证是否满足条件不然不执行
*/
@Override
protected void validate(Controller c) {
// TODO Auto-generated method stub
validateRequiredString("user.name", "nameMsg", "请输入用户名!");
validateRequiredString("user.password", "passwordMsg", "请输入用户密码");
}
/**
* 验证是修改还是添加
* @param c
*/
protected void handleError(Controller c) {
// TODO Auto-generated method stub
controller.keepModel(User.class);
String actionKey = getActionKey();
if (actionKey.equals("/user/save"))
controller.render("addUser.html");
else if (actionKey.equals("/user/update"))
controller.render("editUser.html");
}
}
package com.demo.common.model;
import com.demo.common.model.base.BaseUser;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class User extends BaseUser<User> {
public static final User dao = new User().dao();
}
java部分完成了
好了就这样了,源码下载地址:
https://download.csdn.net/download/u012374381/10407385
如有建议 和错误欢迎指点和使用