# JFinal-UpgradeSqlPlugin **Repository Path**: bean80/jfinal-upgrade-sql-plugin ## Basic Information - **Project Name**: JFinal-UpgradeSqlPlugin - **Description**: 该插件支持项目启动时自动检查数据库是否需要执行SQL脚本。SQL脚本支持Enjoy SQL模板语法,方便定制功能。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://jfinal.com/share/2657 - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2023-07-16 - **Last Updated**: 2024-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: JFinal ## README # JFinal-UpgradeSqlPlugin #### 介绍 该插件支持项目启动时自动检查数据库是否需要执行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了。