解決jfinal 生成sql server2008表model問題

一創建繼承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

緣由以下:插件

輸入圖片說明

因此將該行代碼移到最上,問題解決 輸入圖片說明

相關文章
相關標籤/搜索