首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFinal是否支持启动后自动更新数据表?
nbjgl
2019-04-17 09:02
本地数据表修改了以后,Generator后,可以生成对应的类。但是部署到线上时,线上的表,还需要先提前手动修改,感觉很麻烦,有时候还会忘记改过哪个字段。感觉JFinal应该内置自动更新表的功能。
项目:
JFinal
2
评论区
JFinal
2019-04-17 09:33
对于应用程序,数据是核心,最好不要交给程序自动改变,而是要人为知道数据结构修改这事
回复
JFinal
2019-04-17 09:39
建议的做法是,每次改表结构都使用 alter 型 sql 语句,该 sql 语句在本地执行完成后立即保存到一个专有的文件里头
在项目部署前将上述文件里头的 sql 在生产环境逐条执行,注意这类 sql 的样子是:
alter table t_app change name app_name varchar(20) not null;
这里有很多 alter 型 sql:
https://www.cnblogs.com/dw3306/p/9650220.html
alter 型 sql 有个好处: 执行完一次,如果不小心执行第二次没有破坏作用,因为原先的修改已经达成,反复执行 alter 无影响
回复
JFinal
2019-04-17 09:41
手头持有 alter 型 sql 语句,就能安全、方便地进行数据库表结构的升级
如果你还希望更方便点,可以写个工具类执行这个文件中的 sql 语句,大致如下:
for ( sql : sqls) {
Db.update(sql);
}
回复
杜福忠
2019-04-17 11:18
回复
nbjgl
2019-04-18 19:13
@JFinal
程序里面有Getter和Setter了,如果JFinal可以根据这些,自动生成Alter语句,然后执行更新数据表。怕有风险可以弄一个开关配置,让开发者自己去选择是否自动更新。我觉得这个是一个通用型高频需求,希望后续的版本可以增加这个强大的功能。
回复
JFinal9527
2019-04-19 09:55
@nbjgl
我觉得如果配置不小心生产环境数据表出事影响太大了,搞个工具类还是可以的。
回复
jfinal初识
2019-04-19 17:46
你这个问题不应该交给jfinal,这是开发人员或者线上部署人员疏忽大意的问题,不要推卸责任哈,平时工作的时候多用心,细心负责,成长更快
回复
发送
我要反馈
热门反馈
扫码入社