_JFinalGenerator.java 2.8 KB
package com.teplot.common;

import java.io.File;

import javax.sql.DataSource;

import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.c3p0.C3p0Plugin;

public class _JFinalGenerator {
	public static void main(String[] args) {
		String pathname = "/Users/Kevin/Documents/workspace/javaweb/con-eyes/con-eyes-model/src/resources/config.properties";
		Prop p = PropKit.use(new File(pathname));

		String jdbcUrl = p.get("jdbc.url");
		String jdbcUser = p.get("jdbc.user");
		String jdbcPassword = p.get("jdbc.password");
		DataSource dataSource = getDataSource(jdbcUrl, jdbcUser, jdbcPassword);

		String baseModelPackageName = "com.coneyes.model.base";
		String baseModelOutputDir = "/Users/Kevin/Documents/workspace/javaweb/con-eyes/con-eyes-model/src/main/java/com/coneyes/model/base";
		String modelPackageName = "com.coneyes.model";
		String modelOutputDir = baseModelOutputDir + "/..";

		generate(dataSource, baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
	}

	public static DataSource getDataSource(String jdbcUrl, String jdbcUser, String jdbcPassword) {
		// 创建c3p0连接
		C3p0Plugin c3p0Plugin = new C3p0Plugin(jdbcUrl, jdbcUser, jdbcPassword);
		c3p0Plugin.start();
		return c3p0Plugin.getDataSource();
	}

	/**
	 * 
	 * @param baseModelPackageName
	 *            base model 所使用的包名
	 * @param baseModelOutputDir
	 *            base model 文件保存路径
	 * @param modelPackageName
	 *            model 所使用的包名 (MappingKit 默认使用的包名)
	 * @param modelOutputDir
	 *            model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
	 */
	public static void generate(DataSource dataSource, String baseModelPackageName, String baseModelOutputDir,
			String modelPackageName, String modelOutputDir) {
		_BaseModelGenerator baseModelGenerator = new _BaseModelGenerator(baseModelPackageName, baseModelOutputDir);
		// 创建生成器
		_ModelGenerator modelGenerator = new _ModelGenerator(modelPackageName, baseModelPackageName, modelOutputDir);
		modelGenerator.setGenerateDaoInModel(true);
		Generator gernerator = new Generator(dataSource, baseModelGenerator, modelGenerator);

		// 设置数据库方言
		// gernerator.setDialect(new MysqlDialect());
		// 添加不需要生成的表名
		// gernerator.addExcludedTable("adv");
		// 设置是否在 Model 中生成 dao 对象
		gernerator.setGenerateDaoInModel(true);
		// 设置是否生成字典文件
		gernerator.setGenerateDataDictionary(true);
		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为
		// "User"而非 OscUser
		 gernerator.setRemovedTableNamePrefixes("WDS_");
		// 生成
		gernerator.generate();
	}

}