sql管理中可以定义全局常量吗

sql管理模块,一个sql文件中,可以在头部设置一个全局的常量,然后在这个sql文件中都可以直接使用。类似以下的功能:

student.sql
#set(NORMAL=xxx.StatusConst::STATUS_NORML)

#sql("list")
select * from student where status = #para(NORMAL)
#end

#sql("update")
update student set status = #para(NORMAL) where student_id = #para(0)
#end

不想直接把常量写死,还是想用引用常量类的方式来做,但是每次都需要写很长,可以写成类似这种格式吗

评论区

JFinal

2017-09-29 15:29

可以通过 arp.getEngine().addSharedObject(....) 将这些常量变成共享变量,然后 sql 文件中直接使用:
arp.getEngine().addSharedObject("NORMAL", xxx.StatusConst.STATUS_NORMAL);
这样配置以后,就可以在任意 sql 中直接使用了

#set(....) 指令的话,需要在 #sql 中来使用,因为每个 #sql 指令内部的数据是彼此独立的

JFinal

2017-09-29 15:30

如果是用于 web 的模板,可以在页面开头使用 #set(...) 指令,然后页面的其它地方就可以用了,而 sql 管理模块的 #sql 指令之间的变量作用域不同,所以就用不了,只能在 #sql 内部现 #set(...) 现用

ting

2017-09-29 15:34

@JFinal ^_^谢谢大神

热门反馈

扫码入社