JFinal開發(fā)平臺(tái)搭建(2)

自動(dòng)生成javabean

上篇說到創(chuàng)建入口類厚者,繼承JFinalConfig
我們注意到在這個(gè)類中有如下代碼

public void configPlugin(Plugins me) {
        // 配置 druid 數(shù)據(jù)庫連接池插件
        DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password"));
        me.add(druidPlugin);
        
        // ehcache插件
        EhCachePlugin ehCachePlugin = new EhCachePlugin();
        me.add(ehCachePlugin);
        
        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        arp.setShowSql(false);
        arp.setDevMode(true);
        // 所有映射在 MappingKit 中自動(dòng)化搞定
        _MappingKit.mapping(arp);
        me.add(arp);
    }

在后面配置ActiveRecord插件中,配置_MappingKit晃琳,我們看一下這個(gè)類

public class _MappingKit {
    
    public static void mapping(ActiveRecordPlugin arp) {
        
        arp.addMapping("tb_base_manager", "id",Manager.class);
        arp.addMapping("tb_base_navigation", "id",Navigation.class);
        arp.addMapping("tb_base_role","id",Role.class);
        arp.addMapping("tb_base_manager_role", "id",ManagerRole.class);
        arp.addMapping("tb_base_role_navigation","id",RoleNavigation.class);
        arp.addMapping("tb_point_record", "point_record_id",PointRecord.class);
        
    }
}

mapping方法的內(nèi)部配置了表名,主鍵的列名琐鲁,對(duì)應(yīng)的實(shí)體類卫旱,當(dāng)然,這些都是自動(dòng)生成的围段,不用我們一行一行的寫了

public class _JFinalDemoGenerator {
    
    public static DataSource getDataSource() {
        PropKit.use("application.properties");
        DruidPlugin druidPlugin = O2OConfig.createDruidPlugin();
        druidPlugin.start();
        return druidPlugin.getDataSource();
    }
    
    public static void main(String[] args) {
        // base model 所使用的包名
        String baseModelPackageName = "com.o2o.common.model.base";
        // base model 文件保存路徑
        String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/o2o/common/model/base";
        
        // model 所使用的包名 (MappingKit 默認(rèn)使用的包名)
        String modelPackageName = "com.o2o.common.model";
        // model 文件保存路徑 (MappingKit 與 DataDictionary 文件默認(rèn)保存路徑)
        String modelOutputDir = baseModelOutputDir + "/..";
        
        // 創(chuàng)建生成器
        Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
        // 設(shè)置是否生成鏈?zhǔn)?setter 方法
        generator.setGenerateChainSetter(false);
        // 添加不需要生成的表名
        // generator.addExcludedTable("tb_shangjiaoperation1");
        // 設(shè)置是否在 Model 中生成 dao 對(duì)象
        generator.setGenerateDaoInModel(true);
        // 設(shè)置是否生成鏈?zhǔn)?setter 方法
        generator.setGenerateChainSetter(true);
        // 設(shè)置是否生成字典文件
        generator.setGenerateDataDictionary(false);
        // 設(shè)置需要被移除的表名前綴用于生成modelName顾翼。例如表名 "osc_user",移除前綴 "osc_"后生成的model名為 "User"而非 OscUser
        generator.setRemovedTableNamePrefixes("tb_base");
        // 生成
        generator.generate();
    }
}

注釋中寫的很清楚蒜撮,可以配置哪些東西暴构,配置完成后運(yùn)行main方法跪呈,就可以自動(dòng)生成javabean和映射了;

創(chuàng)建Controller

在創(chuàng)建controller之前,還是要看一下入口類的相關(guān)配置

public void configRoute(Routes me) {
        //第一個(gè)參數(shù)是訪問的路徑取逾,第二個(gè)參數(shù)配置Controller耗绿,第三個(gè)參數(shù)是視圖的路徑
        me.add("/", IndexController.class, "/WEB-INF/view/index");
        me.add("/navigation", NavigationController.class,"/WEB-INF/view/navigation");
        me.add("/manager", ManagerController.class,"/WEB-INF/view/manager");
        me.add("/role", RoleController.class,"/WEB-INF/view/role");/
    }

我們配置了4個(gè)Controller,以后如果每增加一個(gè)controller就要在這里增加一行路由信息砾隅,以IndexController為例误阻,編寫IndexController,繼承com.jfinal.core.Controller類

public class IndexController extends Controller {
    static ManagerService managerService = new ManagerService();
    
    public void index() {
        render("index.html");
    }
    
    //登陸
    public void login() throws Exception{
        ...
        redirect("/toLogin");
    }
    
    public void toLogin() {
        render("login.html");
    }
    
    public void logout() {
        ...
        redirect("toLogin");
    }
}

在訪問路由中的路徑時(shí)晴埂,比如(“/”)究反,會(huì)進(jìn)入到index方法中,訪問其他方法需要在路由中配置的路徑+方法名(“/toLogin”會(huì)訪問toLogin方法)儒洛,這個(gè)類展示了兩種渲染方式精耐,分別是轉(zhuǎn)發(fā)(render)和重定向(redirect),此外還有renderJavascript, renderJson等其他渲染方式


至此JFinal的框架最基本的使用就配置完成了,我們可以在tomcat中運(yùn)行項(xiàng)目或者使用以下的代碼運(yùn)行

public static void main(String[] args) {
        /**
         * 特別注意:Eclipse 之下建議的啟動(dòng)方式
         */
        JFinal.start("src/main/webapp", 8080, "/", 5);
        
        /**
         * 特別注意:IDEA 之下建議的啟動(dòng)方式琅锻,僅比 eclipse 之下少了最后一個(gè)參數(shù)
         */
        // JFinal.start("src/main/webapp", 80, "/");
    }

參考資料 http://www.jfinal.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卦停,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恼蓬,更是在濱河造成了極大的恐慌惊完,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件处硬,死亡現(xiàn)場(chǎng)離奇詭異小槐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荷辕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門凿跳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桐腌,你說我怎么就攤上這事拄显。” “怎么了案站?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵躬审,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蟆盐,道長(zhǎng)承边,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任石挂,我火速辦了婚禮博助,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痹愚。我一直安慰自己富岳,他們只是感情好蛔糯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窖式,像睡著了一般蚁飒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萝喘,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天淮逻,我揣著相機(jī)與錄音,去河邊找鬼阁簸。 笑死爬早,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的启妹。 我是一名探鬼主播筛严,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼饶米!你這毒婦竟也來了脑漫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤咙崎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吨拍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褪猛,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年羹饰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伊滋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡队秩,死狀恐怖笑旺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馍资,我是刑警寧澤筒主,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站鸟蟹,受9級(jí)特大地震影響乌妙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜建钥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一藤韵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熊经,春花似錦泽艘、人聲如沸欲险。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽天试。三九已至,卻和暖如春焕盟,著一層夾襖步出監(jiān)牢的瞬間秋秤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工脚翘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灼卢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓来农,卻偏偏與公主長(zhǎng)得像鞋真,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沃于,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架涩咖,建立于...
    Hsinwong閱讀 22,313評(píng)論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)繁莹,斷路器檩互,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,790評(píng)論 0 11
  • 看看閑書,聽聽別人的言論咨演,就有點(diǎn)自己的小感受闸昨。 1.“萬變不離其宗” 在有些場(chǎng)合,“萬變不離其宗”是褒義詞薄风,但這會(huì)...
    鴛鴦袖里握兵符閱讀 310評(píng)論 0 1
  • 在開發(fā)中可能多處會(huì)用到過濾Emoji表情符饵较,一般情況下,我們會(huì)通過EditText的addTextChangedL...
    Mr_zhoujp閱讀 7,629評(píng)論 5 2