代码拉取完成,页面将自动刷新
该插件支持项目启动时自动检查数据库是否需要执行SQL脚本。SQL脚本支持Enjoy SQL模板语法,方便定制功能。
软件架构说明
1、注册插件:https://jfinal.com/doc/2-5
public void configPlugin(Plugins me) {
DruidPlugin dp = new DruidPlugin(jdbcUrl, userName, password);
me.add(dp);
//自动检查升级数据库
me.add(new UpgradeSqlPlugin(dp));
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
arp.addMapping("user", User.class);
me.add(arp);
}
数据库连接账户需要使用 有建表 修改表 等权限的账户,一般升级脚本里面就是要建表和改变表结构的。 如果担心业务数据账户安全 ,可以使用独立的DruidPlugin,和业务数据库账户分开,高权限的账户只做升级操作,升级完立即stop掉就可以了。
2、编写SQL脚本:
在配置文件目录 》建一个upgrade_sql目录,里面编写模板SQL文件即可,比如: src/main/resources/upgrade_sql/2023-07-16_user_dfz.sql
SQL文件除了支持 官方的#para 指令,还增加了几个常用指令:
#runSql、#find、#findFirst、#try
执行多行SQL:
#runSql(受影响行数返回结果的变量名默认是result, true) 特殊场景:给true参数时代表运行异常时可继续执行
在此是SQL语句,多条用 ;\n 分号加回车符 隔开
#end
查询list集合的,一般用于需要先查出结果再根据数据进行修改的,比如迁移历史数据,之前是一对一,后面改成了一对多等等业务
#find(返回结果的变量名默认是list)
在此是SQL语句
#end
查一条数据的:
#findFirst(返回结果的变量名默认是record)
在此是SQL语句
#end
以及吃住异常再处理的指令:
#try(默认值exception可设置)
包裹代码或指令
#end
#if(exception)
#(exception.getMessage())
#end
-----------------------------------------------------
例子:
#runSql()
ALTER TABLE xxxx
#end
项目启动升级后,数据库会自动建一个upgrade_sql_config_log记录升级情况。
业务系统做一个界面可查看升级记录就OK了。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。