Wie durch HashMap in MyBatis foreach zu reagieren?

8

Ich versuche, eine SQL zu erzeugen, die wie unten in mybatis ist.

%Vor%

Und mein Eingabeparametertyp ist HashMap. Jetzt Wie generiere ich SQL aus Mapper XML-Datei. Der folgende Code löst die Ausnahme aus, die besagt, dass map auf null ausgewertet wurde.

%Vor%

Einer der anderen Ansätze besteht darin, eine Klasse mit Schlüsselwertfeldern zu erstellen, eine Objektliste zu erstellen und dann parameterType als list zu übergeben, was wie folgt aussehen würde.

%Vor%

Aber gibt es einen Weg zu meiner Mapper Arbeit für den ersten Ansatz? Anders als die Abfrage in die Union zu ändern

    
Karthik Prasad 22.08.2013, 19:09
quelle

3 Antworten

13

Diese Lösung funktioniert seit Version 3.2 nicht mehr. Weitere Informationen finden Sie unter Problem # 208 !

Endlich habe ich die Lösung für HashMap

Ich sollte entrySet() verwenden, um es iterierbar zu machen

%Vor%

Eine weitere Isue, die mit dem Parameternamen konfrontiert wurde, wurde nicht injiziert. Daher wurde @Param annotation

hinzugefügt

Die Mapper-Schnittstelle sieht daher wie folgt aus:

%Vor%     
Karthik Prasad 13.02.2014, 14:57
quelle
11

Dies ist ein Beispiel in meinem Projekt und es funktioniert gut

%Vor%     
foghost 08.05.2014 07:04
quelle
1

In Ihrem ersten Beispiel sucht mybatis nach einem Eintrag in der ParameterMap mit dem Schlüssel "map". Ich vermute, dass Sie tatsächlich versuchen, den Schlüsselsatz der ParameterMap zu iterieren. Wenn Sie die Karte innerhalb der Parameterkarte mit dem Schlüssel "map" verschachtelt haben, sollte es funktionieren.

Im zweiten Beispiel sollten Sie nur HashMap.entrySet () übergeben können, das einen getKey und getValue liefert.

    
Brian 17.09.2013 15:24
quelle

Tags und Links