sql模板传入参数进行where in(para(0))时只能提取一条、而在natve-mysqsl中有三条

1、SQL模板

blob.png

2、程序调用

blob.png

3、在native-mysql中是多条

blob.png

4、可是在程序中是一条

blob.png


问题:

这是怎么回事:

1)在native-mysql中   in(12,14,15)   显示3条

2)sqlPara中,传入"12,14,15"===》可是提取的<list>.size()只有一条

3)好像他把String = "12,14,15"的左右的双引号都传入#para(0)了,

  如何解决???


评论区

JFinal

2017-10-26 16:14

这个是纯 jdbc 问题,in(...) 中的参数有多少问号占位,就需要多少个参数值相对应,而不能是一个

要像是下面的形式:
sql = select * from xxx where id in( ?, ?, ?);
paras = [1, 2, 3];
上面的代码,sql 中是三个问号占位,所以参数也需要三个

解决方案就极其简单了,在模板中通过 for 循环来做:
select * from xxx where id in(
#for(x : ids)
#if(!for.first) , #end #para(x)
#end
)

JFinal

2017-10-26 16:15

强调一下,这个决然与 jfinal 无关,是 jdbc 这么要求来用的

peterpeter

2017-10-26 16:33

@JFinal 这个做法是用Kv作为参数传入sqlPara的吧

糊搞

2020-05-23 18:08

https://my.oschina.net/u/1175852/blog/4288502

热门反馈

扫码入社