Um den Bedingungswert der where-Klausel in MyBatis dynamisch zu übergeben, ist es meines Erachtens üblich, ihn als vorbereitete Anweisung mit "#" zu behandeln, wie unten gezeigt.
SQL-Definitionsdatei.xml
<select id="getHogeValue" resultType="java.util.Map">
select *
form hoge_table
where foo_1 = #{foovalue}
</select>
In diesem Abschnitt wird beschrieben, wie Sie die zu erfassenden Spalten dynamisch ändern. Mit anderen Worten, es ist nützlich, wenn die in der select-Klausel angegebene Spalte unbestimmt ist.
Java:JDK1.7 MyBatis:mybatis-3.2.5.jar
Anstatt es als Wert einer vorbereiteten Anweisung zu übergeben Verwenden Sie "$", um als Zeichenfolge zu übergeben.
Unten ist ein Beispiel.
Datenzugriffsklasse.java
//Definieren Sie den dynamischen Teil des Spaltennamens in Liste
List<Integer> columnIdList = Arrays.asList(1,2,3,4);
//Legen Sie die dynamische Teileliste des Spaltennamens als Map fest
Map params = new HashMap();
params.put("column_id_list", columnIdList);
//FOO vom Hoge Tisch_1, FOO_2, FOO_3, FOO_4, BAR_1, BAR_2, BAR_3, BAR_Holen Sie sich 4
List<Map> hogeValueLsit = hogeTableMapper.getHogeValue(params);
//Überprüfen Sie den erfassten Inhalt
for (Map elm : hogeValueLsit) {
int idx = 0;
for (Integer columnId : columnIdList) {
String foo = (String)elm.get("FOO_"+columnId);
System.out.println("FOO_" + idx + "Der zweite ist" + foo + "ist.");
String bar = (String)elm.get("BAR_"+columnId);
System.out.println("BAR_" + idx + "Der zweite ist" + bar + "ist.");
}
}
SQL-Definitionsdatei.xml
<select id="getHogeValue" resultType="java.util.Map">
select
<foreach item="column_id" collection="column_id_list">
foo_${column_id}
,bar_${column_id}
</foreach>
from hoge_table
</select>
Beachten Sie, dass der Spaltenname beim Abrufen auf der Java-Seite "Großbuchstabe" ist Auch wenn die Seite der SQL-Definitionsdatei "foo_" in Kleinbuchstaben verwendet Der Map-Schlüssel auf der Java-Seite kann nur mit "FOO_" in Großbuchstaben abgerufen werden.
das ist alles.
Recommended Posts