问题描述
配置UserMapper.xml文件里的内容:<select id="selectUser" parameterType="String" resultMap="result"> select * from t_user where f_pkid in(${pkId});</select><update id="alterUser" parameterType="java.lang.String">update t_user set f_isdeleted = 'Y' where f_pkid in<foreach item="pkId" index="index" collection="list" open="(" separator="," close=")">#{pkId}</foreach></update>得到的参数是31,32,33形式的字符串,第一种如果是#{}这种形式传参的话,参数外自动加上了单引号,只能查询一个。第二种${}这种形式也不对给不了参数 , 后面这种形式加foreach节点collection属性的值我又不知道怎么传 我用的是mybatis3版本 哪位朋友帮忙解决一下接口内容是:public List<User> selectUser(String pkId);public void alterUser(String pkId); 问题补充:ZavaKid 写道
解决方案
很可能是因为生命的参数类型 parameterType="String"的这样传进来的参数,就自动被加上引号了。第二种的foreach,应该是对可 iterable 作迭代的。但是你传入的是String,就不能迭代了。可以使用parameterType="java.util.list",然后在对应的实现类中,将String转成相应的list。
解决方案二:
短信你了
解决方案三:
引用你有这方面得代码吗,关于java类得,怎么将String转成相应的list啊按照你的情况,就是解析String,将每个项加入到一个list。比如 String s = "a,b,c"; String[] sarray = s.split(","); List<String> list = Arrays.asList(sarray);不过还是建议考虑接口是以list或者数组的形式暴露出来好了,