JFinal是否支持启动后自动更新数据表?

本地数据表修改了以后,Generator后,可以生成对应的类。但是部署到线上时,线上的表,还需要先提前手动修改,感觉很麻烦,有时候还会忘记改过哪个字段。感觉JFinal应该内置自动更新表的功能。

评论区

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,这是开发人员或者线上部署人员疏忽大意的问题,不要推卸责任哈,平时工作的时候多用心,细心负责,成长更快

热门反馈

扫码入社