我写了一个查询:-
<select id="fetchEndPointArn" parameterType="map" resultType="com.rohit.service.model.UserActive">
select userid,endpointarns from t_user_actives where sid=#{sid}
and (userid in
<foreach item="userid" index="index" collection="userid" open="(" separator="," close=")">
#{userid}
</foreach>
)
</select>
我的 DaoImpl:-
@Override
public List<UserActive> fetchEndPointArn(Map<String,String> map) {
List<UserActive> userActive=sqlSession.selectList("fetchEndPointArn",map);
return userActive;
}
我传递的 map 包含:-
sid=10,userid=t10,t12
我收到一个异常:-
Error evaluating expression 'userid'. Return value (t10,t12) was not iterable
最佳答案
将参数类型更改为java.util.Map
。将您的集合定义为 collection="list"而不是 collection="userid"
。最后让 userid 成为一个像这样的数组列表
List userid = new ArrayList();
userid.add("t10");
userid.add("t12");
Map paramMap = new HashMap();
paramMap.put("sid",10);
paramMap.put("userid",userid);
然后在你的xml中
<select id="fetchEndPointArn" parameterType="java.util.Map" resultType="com.rohit.service.model.UserActive">
select userid,endpointarns from t_user_actives where sid=#{sid}
and userid in
<foreach item="userid" collection="list" index="index" open="(" separator="," close=")">
#{userid}
</foreach>
</select>
关于java - MyBatis/Ibatis :- Help regarding query in Ibatis/Mybatis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38737216/