C'è una query nei miei Mybatis contenente una clausola in cui è fondamentalmente un insieme di di Id (interi)Come passare un array di interi a clausola in MyBatis
ora sto bloccato su come posso passare un intero array a questa clausola IN in modo che recuperi i record appropriati. Provato passando una stringa contenente gli ID alla clausola IN, ma questo non ha funzionato come previsto.
Codice Esempio
Mybatis metodo utilizzando le annotazioni
@Select(SEL_QUERY)
@Results(value = {@Result(property="id",column="ID")})
List<Integer> getIds(@Param("usrIds") Integer[] usrIds);
query
select distinct ID from table a where a.id in (#{usrIds})
metodo di chiamata
Integer[] arr = new Integer[2];
arr[0] = 1;
arr[1] = 2;
mapper.getIds(arr)
Questo non funziona, Mybatis genera un errore wh it chiamo il metodo mapper
Qualche suggerimento per favore
Grazie per il suggerimento, lo controllerò e aggiornerò lo spazio qui – Vivek
In realtà, funziona anche con le annotazioni a patto che la stringa di query inizi con '
Sì, è possibile farlo utilizzando le annotazioni.
Se si utilizza postgresql, è possibile fare come in this post.
Se stai usando MySQL provare questo cambia nel codice di esempio:
Mybatis metodo utilizzando le annotazioni
Query (utilizzando MySQL)
chiamata al metodo
fonte
2012-02-09 04:40:00
esattamente ciò di cui avevo bisogno – deeshank
Una nota importante qui è che FIND_IN_SET non utilizzerà gli indici quindi è probabile che questa versione abbia un rendimento peggiore di un'istruzione IN – Zack