一創建繼承JFinalConfig的LearngingConfig類,同時實現以下方法html
Java Codejava
package com.learnging.system; import com.demo.common.model._MappingKit; 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.activerecord.dialect.AnsiSqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.template.Engine; import com.learnging.system.routes.AdminRoutes; public class LearngingConfig extends JFinalConfig { /** * 配置常量 */ 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(new AdminRoutes()); } /** * 設置引擎模板 */ public void configEngine(Engine me) { me.addSharedFunction("/common/_layout.html"); me.addSharedFunction("/common/_paginate.html"); } /** * 配置插件 */ public void configPlugin(Plugins me) { // 配置C3p0數據庫鏈接池插件 DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim()); me.add(druidPlugin); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); //設置數據庫方言 arp.setDialect(new AnsiSqlDialect()); arp.setShowSql(true); // 全部映射在 MappingKit 中自動化搞定 _MappingKit.mapping(arp); me.add(arp); } public static DruidPlugin createDruidPlugin() { return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim()); } /** * 配置全局攔截器 */ public void configInterceptor(Interceptors me) { } /** * 配置處理器 */ public void configHandler(Handlers me) { } /** * 運行此 main 方法能夠啓動項目,此main方法能夠放置在任意的Class類定義中,不必定要放於此 * @param args */ public static void main(String[] args) { JFinal.start("src/main/webapp", 80, "/", 5); } }
二修改demo目錄結構以下web
三生成模型sql
1設置模型文件生成路徑及包名數據庫
public static void main(String[] args) { // base model 所使用的包名 String baseModelPackageName = "com.learnging.system.model.base"; // base model 文件保存路徑 String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/learnging/system/model/base"; // model 所使用的包名 (MappingKit 默認使用的包名) String modelPackageName = "com.learnging.system.model"; // model 文件保存路徑 (MappingKit 與 DataDictionary 文件默認保存路徑) String modelOutputDir = baseModelOutputDir + "/.."; // 建立生成器 Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir); // 設置是否生成鏈式 setter 方法 generator.setGenerateChainSetter(false); // 添加不須要生成的表名 generator.addExcludedTable("adv"); // 設置是否在 Model 中生成 dao 對象 generator.setGenerateDaoInModel(true); // 設置是否生成鏈式 setter 方法 generator.setGenerateChainSetter(true); // 設置是否生成字典文件 generator.setGenerateDataDictionary(true); // 設置須要被移除的表名前綴用於生成modelName。例如表名 "osc_user",移除前綴 "osc_"後生成的model名爲 "User"而非 OscUser generator.setRemovedTableNamePrefixes("sys_", "_tb", "_TB"); // 生成 generator.generate(); }
2生成器生成報以下錯,設置方言解決該問題 app
//設置方言 generator.setDialect(new SqlServerDialect());
(2)又報以下錯,經調試,user表在這裏報錯,發現sql有問題,由於sql裏user是關鍵字 webapp
(3)改完數據庫表名還報錯 ui
這回我猜問題就是下面這個了 http://www.oschina.net/question/2276614_2147333 用了連接上的方法,確實不報錯了,可是沒有生成模型 .net
緣由以下:插件
因此將該行代碼移到最上,問題解決