一个简单的JFinal代码生成器

抽空写了一个读取数据库信息,直接生成JFinal代码的生成器。

调用代码如下:


MyCodeMain main = new MyCodeMain();
		main.init();
		String dbName = "dbname";

		Table linkTable = new Table("链接","link");
		Table linkTypeTable = new Table("链接类型","link_type");
		Table siteTable = new Table("站点","site");

		TableInfoReader tir = new MySQLTableInfoReader();

		linkTable = tir.readTableInfo(dbName, linkTable);
		linkTypeTable = tir.readTableInfo(dbName, linkTypeTable);
		siteTable = tir.readTableInfo(dbName, siteTable);

		ModelClassCodeGenerater linkCg = new ModelClassCodeGenerater("com.lh.openapi.manager.model", linkTable);
		ModelClassCodeGenerater linkTypeCg = new ModelClassCodeGenerater("com.lh.openapi.manager.model", linkTypeTable);
		ModelClassCodeGenerater siteCg = new ModelClassCodeGenerater("com.lh.openapi.manager.model", siteTable);

		linkTypeCg.hasMany(linkTable);
		linkCg.belongsTo(linkTypeTable);

		siteCg.hasManyThrough(linkTypeTable, linkTable);

		siteCg.hasOneThrough(linkTypeTable, linkTable);


		linkCg.generate();
		linkTypeCg.generate();
		siteCg.generate();

		ControllerClassCodeGenerater ccg = new ControllerClassCodeGenerater("com.lh.openapi.manager.controller", linkTypeTable );
                ccg.setUseShiro(true);
                ccg.setUseFlash(true);
		ccg.generate();


生成的模型代码:


/*********************************************/
com.lh.openapi.manager.model;
import java.util.List;
import java.util.Map;
import java.util.Date;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Page;

public class LinkType extends Model<LinkType> {

	public static LinkType dao = new LinkType();

	/**
	 *自增id
	 */
	public static final String KEY_ID = "id";
	/**
	 *站点id
	 */
	public static final String KEY_SITE_ID = "site_id";
	/**
	 *优先级,值越高优先级越高
	 */
	public static final String KEY_PRIORITY = "priority";
	/**
	 *是否启用,1:启用,2:禁用
	 */
	public static final String KEY_IS_ENABLE = "is_enable";
	/**
	 *类型名。
	 */
	public static final String KEY_NAME = "name";

	/**
	 * 设定 自增id
	 * @param id 自增id
	 */
	public void setId( Integer id){
		set(KEY_ID, id);
	}

	/**
	 * 获取 自增id
	 * @return 自增id
	 */
	public Integer getId(){
		return getInt(KEY_ID);
	}

	/**
	 * 设定 站点id
	 * @param siteId 站点id
	 */
	public void setSiteId( Integer siteId){
		set(KEY_SITE_ID, siteId);
	}

	/**
	 * 获取 站点id
	 * @return 站点id
	 */
	public Integer getSiteId(){
		return getInt(KEY_SITE_ID);
	}

	/**
	 * 设定 优先级,值越高优先级越高
	 * @param priority 优先级,值越高优先级越高
	 */
	public void setPriority( Integer priority){
		set(KEY_PRIORITY, priority);
	}

	/**
	 * 获取 优先级,值越高优先级越高
	 * @return 优先级,值越高优先级越高
	 */
	public Integer getPriority(){
		return getInt(KEY_PRIORITY);
	}

	/**
	 * 设定 是否启用,1:启用,2:禁用
	 * @param isEnable 是否启用,1:启用,2:禁用
	 */
	public void setIsEnable( Integer isEnable){
		set(KEY_IS_ENABLE, isEnable);
	}

	/**
	 * 获取 是否启用,1:启用,2:禁用
	 * @return 是否启用,1:启用,2:禁用
	 */
	public Integer getIsEnable(){
		return getInt(KEY_IS_ENABLE);
	}

	/**
	 * 设定 类型名。
	 * @param name 类型名。
	 */
	public void setName( String name){
		set(KEY_NAME, name);
	}

	/**
	 * 获取 类型名。
	 * @return 类型名。
	 */
	public String getName(){
		return getStr(KEY_NAME);
	}


	public List<LinkType> findByExample(LinkType linkType){
		Map<String, Object> conds= new HashMap <String, Object>();
		//如果设定了 自增id
		if(linkType.getId()!=null){
			conds.put(KEY_ID, linkType.getId());
		}
		//如果设定了 站点id
		if(linkType.getSiteId()!=null){
			conds.put(KEY_SITE_ID, linkType.getSiteId());
		}
		//如果设定了 优先级,值越高优先级越高
		if(linkType.getPriority()!=null){
			conds.put(KEY_PRIORITY, linkType.getPriority());
		}
		//如果设定了 是否启用,1:启用,2:禁用
		if(linkType.getIsEnable()!=null){
			conds.put(KEY_IS_ENABLE, linkType.getIsEnable());
		}
		//如果设定了 类型名。
		if(linkType.getName()!=null && linkType.getName().length() > 0){
			conds.put(KEY_NAME, linkType.getName());
		}
		return dao.searchByMap(conds, "");
	}

	public LinkType findFristByExample(LinkType linkType){
		List<LinkType> mList = findByExample(linkType);
		return mList!=null && mList.size()>0 ? mList.get(0):null;
	}

	public List<Link> getAllLinksOfLinkType(){
		String sql = "select * from link where link_type_id=?";
		return Link.dao.find(sql,getId());
	}

	public Page<Link> getPageLinksOfLinkType(int pageNumber, int pageSize){
		return Link.dao.paginate(pageNumber, pageSize, "select *", " from link where link_type_id=?", getId());
	}
}



生成的控制器代码如下:


/*********************************************/
package com.lh.openapi.manager.controller;
import java.util.List;
import java.util.Map;

import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.flash.FlashInterceptor;
import com.jfinal.plugin.activerecord.Page;

@Before(FlashInterceptor.class)
@RequiresAuthentication
//@RequiresRoles("admin")
public class LinkTypeController  extends Controller {

	private static Logger log = LoggerFactory.getLogger(LinkTypeController.class);

	@RequiresPermissions("linktype:index")
	public void index(){
		setAttr("linkTypes", LinkType.dao.find("select * from link_type"));
		render("index.html");
	}

	@RequiresPermissions("linktype:new")
	public void newPage(){
		createToken("newToken", 120);
                setAttr("linkType",new LinkType());
		render("new.html");
	}

	@RequiresPermissions("linktype:create")
	public void create(){
		LinkType linkType = this.getModel(LinkType.class,"linkType");
		if(linkType.save()){
			setFlash("msg", "新增成功");
			redirect("show?id="+linkType.getId());
			return;
		}
		setFlash("msg", "新增失败");
		createToken("newToken", 120);
		keepModel(LinkType.class, "linkType");
		render("new.html");
	}

	@RequiresPermissions("linktype:show")
	public void show(){
		setAttr("linkType", LinkType.dao.findById(getParaToInt("id")));
		render("show.html");
	}

	@RequiresPermissions("linktype:edit")
	public void editPage(){
		setAttr("linkType", LinkType.dao.findById(getParaToInt("id")));
		createToken("editToken", 120);
		render("edit.html");
	}

	@RequiresPermissions("linktype:update")
	public void update(){
		LinkType linkType = this.getModel(LinkType.class,"linkType");
		if(linkType.update()){
			setFlash("msg", "更新成功");
			redirect("show?id="+linkType.getId());
			return;
		}
		setFlash("msg", "更新失败");
		createToken("editToken", 120);
		this.keepModel(LinkType.class, "linkType");
		render("edit.html");
	}

	@RequiresPermissions("linktype:delete")
	public void delete(){
		if(LinkType.dao.deleteById(getParaToInt("id"))){
			setFlash("msg", "删除成功");
			redirect("index");
			return;
		}
		setFlash("msg", "删除失败");
		redirect("index");
	}
} 


你可能感兴趣的:(jFinal,生成器)