2016-08-03 6 views
0

ich eine Abfrage geschrieben haben: -Mybatis/Ibatis: - Hilfe zur Abfrage in Ibatis/Mybatis

<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> 

Mein DaoImpl: -

@Override 
public List<UserActive> fetchEndPointArn(Map<String,String> map) { 
    List<UserActive> userActive=sqlSession.selectList("fetchEndPointArn",map); 
    return userActive; 
} 

Karte, die ich vorbei bin enthält: -

sid=10,userid=t10,t12 

ich bin eine Ausnahme immer sagen: -

Error evaluating expression 'userid'. Return value (t10,t12) was not iterable 
+0

Probieren Sie verschiedene Parameternamen zu verwenden, um '' item' und collection'. – Blank

Antwort

1

Ändern Sie den Parametertyp in java.util.Map. Definieren Sie Ihre Sammlung als collection="list" instead of collection="userid". Schließlich machen eine Arraylist so etwas wie dieses userid

List userid = new ArrayList(); 
userid.add("t10"); 
userid.add("t12"); 
Map paramMap = new HashMap(); 
paramMap.put("sid",10); 
paramMap.put("userid",userid); 

Und dann in Ihrem 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>