关于在非配置类中动态加载数据源并映射model-数据表的请教

yshumk 发布于 2015/08/11 16:05
阅读 135
收藏 0

你好,@Jfinal ,又要打扰了。

请问如果想连本地数据库,然后在数据库里面存有其他连接信息,那样的话后面这些数据库是要在

public void configPlugin(Plugins me) {}



之外配,不然配在里面,本地数据库的查询功能还没生效。

我瞎翻jfinal源码,瞎查了下,想尝试模仿地在本地数据库相应的model里面,这样:

if(DbKit.getConfig(dbWorldConfigName)==null){

DbKit.addConfig(new Config(dbWorldConfigName,new C3p0Plugin(s.getStr("ip"),s.getStr("user"),s.getStr("pwd")).getDataSource()));
}


额,这样子.getDataSource()好像会get到个null。。。忘了.start()判断下后get了。。


s是取出来的那个表的某一条记录。

但是这样的话,

public void configPlugin(Plugins me) {
    arp.addMapping("tab_channel", Channel.class);
}



的这种addMapping的功能应该怎样用呢?配置类里的东西是怎么扔到TableMapping、TableBuilder之类的这些的现在还没翻到。。



补充:

TableMapping想到一种是


TableMapping.me().put(new Table(name,modelClass));



但是不知道能不能这样搞。。不知这样跟


public void configPlugin(Plugins me) {
    arp.addMapping("tab_channel", Channel.class);
}
是不是同样的效果


加载中
0
JFinal
JFinal

    这个问题属于 "在非web环境下使用ActiveRecord" 的范畴,虽然看似还是在 web 中使用,但是需要在 web 启动这个时机就能先用上 ActiveRecord。

    所以,看一下 jfinal 2.0 手册的 5.12 章节,按照这一章节里面的方法,将数据库有关配置全部转移到 YourJFinalConfig.beforeJFinalStart() 方法中去,或者将配置仍然放到 configPlugin(...) 里面,但不使用 me.add(...) 这句代码,全部手动调用 start() 方法即可打完收工。

玛雅牛
玛雅牛
shiro使用时需要和具体的业务代码想结合使用,jfinal-shrio插件的目的是为了方便在jfinal中集成和使用shiro。
JFinal
JFinal
回复 @ITJin : 看一下 @玛雅牛 大神的 jfinal shiro 插件: http://www.oschina.net/p/jfinalshiroplugin
I
ITJin
大神,您的那个Shiro代码不完整吧,运行不了
0
yshumk
yshumk

引用来自“JFinal”的评论

    这个问题属于 "在非web环境下使用ActiveRecord" 的范畴,虽然看似还是在 web 中使用,但是需要在 web 启动这个时机就能先用上 ActiveRecord。

    所以,看一下 jfinal 2.0 手册的 5.12 章节,按照这一章节里面的方法,将数据库有关配置全部转移到 YourJFinalConfig.beforeJFinalStart() 方法中去,或者将配置仍然放到 configPlugin(...) 里面,但不使用 me.add(...) 这句代码,全部手动调用 start() 方法即可打完收工。

原来如此!非常感谢。初学Jfinal,Java也不是很懂,所以很多问题,这几天多有打扰,抱歉。

我刚刚试了一下,类似

if (DbKit.getConfig(dbWorldConfigName) == null) {
    String jdbcUrl = "jdbc:mysql://" + s.getStr("ip")+ "/car_world?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull";
    C3p0Plugin csw = new C3p0Plugin(jdbcUrl, s.getStr("user"), s.getStr("pwd"));
    if (csw.start()) {
	DbKit.addConfig(new Config(dbWorldConfigName, csw.getDataSource()));
        TableMapping.me().putTable(new Table("t_role", Role.class));
        TableMapping.me().putTable(new Table("t_pay_record", PayRecord.class));
    }
}



,好像也能连成功,不过我对连接池这样start()后没啥销毁有没啥问题并不了解,不知道能不能正常用?

返回顶部
顶部