Reputation: 135
I have written a query :-
<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>
My DaoImpl:-
@Override
public List<UserActive> fetchEndPointArn(Map<String,String> map) {
List<UserActive> userActive=sqlSession.selectList("fetchEndPointArn",map);
return userActive;
}
map which I am passing contains :-
sid=10,userid=t10,t12
I am getting an Exception saying :-
Error evaluating expression 'userid'. Return value (t10,t12) was not iterable
Upvotes: 0
Views: 1031
Reputation: 1663
change the parameter type to java.util.Map
. Define your collection as collection="list" instead of collection="userid"
. Finally make userid an arraylist something like this
List userid = new ArrayList();
userid.add("t10");
userid.add("t12");
Map paramMap = new HashMap();
paramMap.put("sid",10);
paramMap.put("userid",userid);
And then in your 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>
Upvotes: 1