sql template 要怎么设置才能热加载

应该是很简单的事,但是我遇到了问题,请帮忙看下是哪里不对。

Enjoy template 写 html 是热加载的,但是 sql  template 却没有,同样是外部模板文件,sql template 如何才能热加载?sql 文件应该放到什么目录下(我不需要 class 的热加载,只需要 sql template 的热加载)

在 jfinal-admin 项目上,按照下面文档设置了 开发模式:

图片.png

图片.png

找到下面这个使用 sql template 的地方,但是, 修改 sql文件后,并没有重新加载,

图片.png

图片.png

图片.png

这是 修改之前的 log

图片.png

随便修改一下,增加了 and 1 = 0  这个条件

图片.png

刷新页面

图片.png

但是,输出的 sql 还是原先的内容

图片.png

重新启动程序后,再次刷新页面,才能看到 执行了修改后的 sql

图片.png

图片.png

sql template 直接放到 resource 下,也不能热加载

测试代码,还是刷新页面,看 log 输出

图片.png

添加 sql template

图片.png

图片.png

当修改 tmp.sql 后,刷新页面,看 log 输出,还是修改之前 sql 的结果

------------------------------------------------------------------------------------------

已解决:

原因是读取的 sql template 其实是 target/classes 目录下的,根据文件的修改日期来判定是否要再次加载,而我用的是 IDEA,修改后的sql 文件没有被自动复制到 target 目录下,所以修改后的文件自然就读不到。

尽管也有帖子说如何自动编译,但遗憾的是我在 2022.2 版本上都没实验成功......,不过不要紧,退而求其次,只要在修改 sql 文件后,执行下 build project 也就可以了,会自动把 sql 从 resouces 目录下复制到 target/classes 目录下,文件的修改日期就对了,就能加载到修改后的 sql 了。

2022.2 截图:only works while not running/debugging

图片.png

https://jfinal.com/share/2309 相比,居然第一项 allow.when.app.running 没有了

图片.png

哪位同学如果实现了运行时的 auto build,还请告诉我一下。

评论区

JFinal

2022-09-03 12:51

这个问题很简单,在 arp = new ActiveRecordPlugin(...) 后面立即:
arp.setDevMode(true)

而不是在 addSqlTemplate 之后再调用 arp.setDevModel(true), devMode 要先配置