sql template的问题

环境JFinal4.9,问题如下:

我想为sql模板添加一些指令以简化并提高sql template的可读性,但启动时遇到问题

image.png

原因是paraLike指令不存在???但我的config的确添加了paraLike扩展,如下:

配置engine:

image.png

配置plugin:

image.png

在sqlTemplate中使用了paraLike:

image.png

经调试发现是jfinal的engine和plugin的启动顺序和预想不一致,JFinal4.9中先启动plugin,之后启动engine,所以导致无法识别paraLike指令,求解该如何操作?




评论区

xialinlin

2020-07-15 17:32

应用于 SQL 管理的 Engine 对象的配置在 configPlugin(Plugins me) 中进行:

public void configPlugin(Plugins me) {
ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
Engine engine = arp.getEngine();

// 上面的代码获取到了用于 sql 管理功能的 Engine 对象,接着就可以开始配置了
engine.setToClassPathSourceFactory();
engine.addSharedMethod(new StrKit());

me.add(arp);
}
https://jfinal.com/doc/6-2

BTMTimor

2020-07-15 19:25

@xialinlin 谢了,没注意到这个,我以为那是使用同一个engine

BTMTimor

2020-07-15 19:26

@JFinal 不是这个问题,1,2,3,4,5都用了,没用哦,谢了

JFinal

2020-07-15 23:36

@BTMTimor 没仔细看到问题, @xialinlin 同学的回复是对的

永字诀

2020-07-16 16:15

https://jfinal.com/doc/6-11 第4部分Engine对象管理:
JFinal 的 render 模块以及 activerecord 模块使用 new Engine() 创建实例,无法通过 Engine.use(name) 获取到,前者可以通过RenderManager.me().getEngine() 获取到,后者可以通过 activeRecordPlugin.getEngine() 获取到。

JFinal

2020-07-16 16:51

@永字诀 这个是正解