如何启动时加载数据

需求是项目启动时 从数据库读取数据 将这些数据赋值给

image.png

这个应该怎么实现?

评论区

静态代码块

2018-12-28 14:38

文档 2.8 回调方法配置

杜福忠

2018-12-28 14:54

意思是先启动数据库, 拿到些配置数据对吧?
如果是的话: ActiveRecordPlugin可以独立于java web 环境运行在任何普通的java程序中
https://www.jfinal.com/doc/5-15

yuer_2018

2018-12-28 15:18

@杜福忠 不是独立web环境的,是说我数据库中有配置数据,当启动项目时从数据库中读取数据,获得配置数据

杜福忠

2018-12-28 16:11

@yuer_2018 你先看下后面的连接就知道了, 使用ActiveRecordPlugin独立启动, 把这个代码抽取写在configConstant(Constants me) { 中调用即可

yuer_2018

2018-12-29 09:57

@杜福忠 按照你说的试了一下,报错:Config already exists: main
因为我configPlugin(Plugins plugins)中已经设置了 // database model map
ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);
activeRecordPlugin.setShowSql(false);
所以另外抽取出来 再次调用 就会出错

杜福忠

2018-12-29 11:51

@yuer_2018 额。脑壳疼。。。那就拿掉configPlugin(Plugins plugins)中设置的那个哈, 一定要回到当时学习Java时的状态, 不能用了框架就忘了他是Java

yuer_2018

2018-12-29 13:15

@杜福忠 请教另外一个问题 现在可以启动就能获得到数据库的数据了,但是如果将这些数据赋值给一个自定义的枚举类?这样其他使用这个枚举类的都能获得这些数据?自定义枚举类:public enum Color {

YELLO("黄色", 4);//这里其实不应该有值,这里的值是项目启动时 从数据库读取出来的


private String name ;
private int index ;

private Color( String name , int index ){
this.name = name ;
this.index = index ;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}


}

杜福忠

2018-12-29 17:09

@yuer_2018 别整太多骚操作, 直接写个Model做承载就可以了, 然后需要配置的地方, 调用这个 Model 对象就可以了

yuer_2018

2018-12-29 17:22

@杜福忠 数据库查询的是list集合,那是不是在这个Model中 定义一个存放这个Model的list集合?

杜福忠

2018-12-29 23:17

@yuer_2018 这个看你业务怎么配置都可以, 规则你来定, 比如我的系统中有一个配置表 , 字段就是我各种配置的字段, 初始化的时候 就 dao.findById(1) 这样初始化一个对象, 如果修改配置的话, 也直接修改这个对象, 和保存数据库即可。
当然你还可以做一个类似与 KV 这样键值的表, 取到一个List的时候, for转成Map, 这样再取值也是非常方便的事情

热门反馈

扫码入社