Ich benutze Spring Boot mit Spring Cache. Ich habe eine Methode, die eine Liste von IDs gegeben, um eine Liste von Food
zurückgibt, die mit diesen IDs entsprechen:Wie kann ich eine Datenbankabfrage mit dem Operator "IN" zwischenspeichern?
public List<Food> get(List<Integer> ids) {
return "select * from FOOD where FOOD_ID in ids"; // << pseudo-code
}
Ich möchte die Ergebnisse von id zwischenzuspeichern. Stellen Sie sich vor, dass ich tun:
List<Food> foods = get(asList(1, 5, 7));
und dann:
List<Food> foods = get(asList(1, 5));
Ich möchte Food
mit der ID 1 und Food
mit id 5 aus dem Cache abgerufen werden. Ist es möglich?
Ich weiß, ich kann wie ein Verfahren tun:
@Cacheable(key = "id")
public Food getById(id){
...
}
und die IDs Liste durchlaufen und es jedes Mal nennen, aber in diesem Fall, den ich nicht nutzen von IN
SQL-Operator, nicht wahr? Vielen Dank.
tun nur 'return ids.stream() Karte (Service :: getById) .collect (Collectors.toList()) '0 –