Jfinal整合layui 增删改查分页

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

如有建议 和错误欢迎指点和使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值