Rohit Goswami
Rohit Goswami

Reputation: 135

MyBatis/Ibatis :- Help regarding query in Ibatis/Mybatis

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

Answers (1)

SiddP
SiddP

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

Related Questions