2
回答
Jfinal 利用自带的template Engine 获取sql =null
【腾讯云】学生服务器套餐10元/月 >>>   

config配置如下:

路径打印信息:

根据路径找到项目下的sql文件存在:

all.sql:

regist.sql

Service层获取:调试出现问题!sql=null

<无标签>
举报
lemondwm
发帖于9个月前 2回/66阅

缺少 namespace,应该是这样获取: Db.getSql("regist.findByUserName")。 在手册中有详细的说明

--- 共有 2 条评论 ---
JFinal 回复 @lemondwm : 通常都是用 getSqlPara 方法,一个方法搞定 sql 与参数封装,用起来方便一个参数搞定:find(sqlPara) 9个月前 回复
lemondwm恩恩,谢谢。是的,因为我看到后面那个最佳实践,才开始做的例子。实践那里没有写获取的例子。而namespace是在前面一点的知识,看了后面忘了前面的了。 9个月前 回复

我看到你的 sql 最终是被编译到 class path 之下的,所以建议用下面方式来配置更好:

Engine engine = activeRecordPlugin.getEngine();
engine.setSourceFactory(new ClassPathSourceFactory());
activeRecordPlugin.addSqlTemplate("/sql/all.sql");

注意,上面的配置不需要再配置 baseSqlTemplatePath 了, 如果要配置,则只需要配置相对于 class path 根路径的一个相对路径,例如:

activeRecordPlugin.setBaseSqlTemplatePath("/sql");

如果配置上了上面的路径,那么添加 sql 就要改成下面:

activeRecordPlugin.addSqlTemplate("all.sql");

一般在使用了 ClassPathSourceFactory 时,建议不再配置 basePath 

顶部