ActiveRecordPlugin提供了自动从resource和jar中加载sql模板的功能。
setBaseSqlTemplatePath设置模板加载扫描路径,设置了,就只会从这个路径扫描加载模板。
addSqlTemplate函数用来添加需要加载的sql模板文件,我为了省事,就只添加了all.sql这个文件其他sql模板文件通过在all.sql文件里使用
#namespace("proQuery")
#include("proQuery.sql")
#end
这样的语句包含进去。这一切都工作的很好。
疑惑的地方是:
在开发环境下,它会自动从resource目录下按setBaseSqlTemplatePath设置的路径扫描加载,这很正常。
在生产环境下,我把config目录下的sql模板文件全部删掉(编译打包后,maven会自动把resource下的模板文件复制到config目录下)。它也会自动从jar加载,这也很正常。
那么疑惑来了:如果生产环境下,在升级更新系统的时候,往往会只替换自己的程序jar,而jar里会打包进去最新的模板文件,但config目录下忘了用最新的sql文件覆盖。此时,config目录下可能会出现比jar文件里少某几个sql文件的情况,也会出现虽然个数都对,某个sql文件内容修改了的情况。这个时候重启程序,它是优先从jar加载还是从config目录下加载呢?
也做了一些试验,但还是想从官方这里得到确切的答复。