在ibatis中,会发现其输入参数只能有一个,于是当出现需要进行多个输入参数的时候,就要想点办法了,我看到的有以下两种比较好的方法能够解决这个问题 1)
用String代替 <select id="checkLogin" parameterClass="java.lang.String"
resultClass="java.lang.Integer"> SELECT
count(*) AS value FROM userinfo WHERE $sql$ </select> 比如如上的map
statement代码中,将输入的参数设置为String类型,而在select语句中直接使用该String,于是用户可以在Java程序代码中手工植入需要匹配的参数。
这个方法很简单,但是弊端也很多。首先得需要用户自己手动写sql语句代码在java中,这与ibatis的本质要将数据层的操作和业务逻辑操作分隔开来是违背的。其次,这个办法可能会被利用造成sql
injection的问题。比如在sql语句的最后加上一句;drop some table。这样的结果显而易见,就是灾难性的。
2)用
Map <select id="checkLogin2" parameterClass="java.util.Map"
resultClass="java.lang.Integer"> SELECT
count(*) AS value FROM userinfo WHERE uid=#uid# and
pwd=#pwd# </select>