在通常情况下iBATIS的参数在sqlmap中使用#param#的形式,参数名以’#’包着,但当使用sql的LIKE语句时就发生了问题,在单引号中无法使用#param#这种形式。奶奶的,害的我昨天弄了半天,现在总结一下,解决方法:

  1. 当应用SELECT * FROM TABLE WHERE COL LIKE ‘value%’时如果要把’value’以参数代替,可以把整个LIKE后面的字符串全改为参数,即 SELECT * FROM TABLE WHERE COL LIKE #param#,此时参数param的值为字符串”value%”。
  2. 使用’$’将参数名包起来,即SELECT * FROM TABLE WHERE COL LIKE ‘$param$%’,此时参数param的值就是字符串”value”。这个方法最好用了!
  3. 使用“||”连接。譬如:SELECT * FROM TABLE WHERE COL LIKE #param#||’%’

但是本人使用的不简单是iBATIS这个东西,是和ValueList(http://valuelist.sourceforget.net)一起用的,ValueList在生产查询列表的时候需要两个iBATIS查询语句,一个查结果,一个查结果的行数,最二球的是我改了查结果的语句,没有该查结果行数的语句,结果就变得很奇怪………

评论联播

Your email address will not be published. Required fields are marked *