Sådan overføres et heltalsarray til IN-klausul i MyBatis
MyBatis-brugervejledningen til dynamisk SQL har et eksempel på, hvordan man bruger en foreach-løkke til at bygge forespørgselsstrengen, som fungerer for lister og arrays.
Før release 3.2 skulle du bruge xml-konfiguration for at bruge dynamisk sql, med nyere versioner skulle det også være muligt at bruge dynamisk sql i annoteringer.
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
JA, du kan gøre det ved at bruge anmærkninger.
Hvis du bruger postgresql , kan du gøre som i dette indlæg.
Hvis du bruger MySQL prøv disse ændringer i dit kodeeksempel:
Mybatis-metode ved hjælp af annoteringer
@Select(SEL_QUERY)
@Results(value = {@Result(property="id",column="ID")})
List<Integer> getIds(@Param("usrIds") String usrIds);
Forespørgsel (ved hjælp af MySQL)
select distinct ID from table a where FIND_IN_SET( a.id, #{usrIds}) <> 0
Metodekald
Integer[] arr = new Integer[2];
arr[0] = 1;
arr[1] = 2;
String usrIds= "";
for (int id : ids) {
usrIds += id + ",";
}
mapper.getIds(usrIds)