在Kv对sql语句占位符传递参数的时候好像key传过去了value传不过去

#sql("doctor")
select name,header,hospitalname,departmentname,
title,starttime,endtime,expertise,
(select count(*) from t_qaorder b where b.doctorid=a.id and b.askid=0) ordernum,
(select TIMESTAMPDIFF(HOUR,addtime,NOW())  
from t_user_credential c where c.user_id=a.id limit 0,1) HOUR
from t_users a
	#for(x:cond)
		#(for.index==0 ? "where":"and") #(x.key) #para(x.value)
	#end

#end

调用代码

Kv cond=Kv.by(" isdoctor= ",1);				
SqlPara sp=Db.getSqlPara("doctor.doctor", Kv.by("cond", cond));
System.out.println(sp.getSql());

打印结果

select name,header,hospitalname,departmentname,
title,starttime,endtime,expertise,
(select count(*) from t_qaorder b where b.doctorid=a.id and b.askid=0) ordernum,
(select TIMESTAMPDIFF(HOUR,addtime,NOW())  
from t_user_credential c where c.user_id=a.id limit 0,1) HOUR
from t_users a
where  isdoctor= ?

不知道是不是那里写的有问题看了文档好像是这么调用

评论区

JFinal

2018-01-03 21:18

value 肯定传过去了,你用的 #para(x.value) 生成sql 时会生成为一个问号占位,真正的参数生成在了 SqlPara 中, 通过 sp.getPara() 可获取到

qin

2018-01-04 18:51

@JFinal 嗯多谢了

热门反馈

扫码入社