Mybatis : "weniger als" Problem Wählen Sie "Anmerkungen"
Ich bin mit java7, spring 3 und mybatis
Pom.xml
<org.mybatis-version>3.2.8</org.mybatis-version>
<org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${org.mybatis-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${org.mybatis-spring-version}</version>
</dependency>
Während der Verwendung auf Basis einer annotation Auswählen, stieß ich auf seltsame Problem, bei dem unten genannten code warf Ausnahme, die durch die Benutzung der < (dann Weniger), während > (größer) funktioniert wie erwartet.
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'> AND STUDENT_ID <= #{joiningDate} </if>
</script>
Nach googeln für eine Weile ich finde, in dieser Frage weiter unten zu berichten.
https://code.google.com/p/mybatis/issues/detail?id=787
Oben genannte Problem kann behoben werden, durch das ersetzen < (weniger als) mit <
wie unten gezeigt.
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'> AND STUDENT_ID <= #{joiningDate} </if>
</script>
Habe ich auch stieß der Vorschlag für die Verwendung mit CDATA oder ^ in angesehenen Szenarien, die ich noch nicht gegeben, versuchen Sie noch.
Frage:
- Meine Frage ist, sollte nicht dieses Problem behoben werden, indem Mybatis-team (zumindest xml-spezifische Konvertierung für Häufig verwendete query-tags) oder das Verhalten ist wie erwartet, da sind wir mit
<script>
tag ?? - Gibt es eine Alternative Lösung, die ich verpasst habe ?
Seine perfekt funktioniert, wie erwähnt oben, aber meine Frage ist, ist das nicht ein zu arbeiten um dann die eigentliche Korrektur ? oder ist es fix ich bin mir nicht bewusst dann über < ?
Das ist die einzige Lösung. In der XML-Datei , die wir immer haben, verwenden Sie die ascii-Werte als < & etc etc. Für Mybatis, da nicht jede Ausnahme von dieser Regel.
InformationsquelleAutor Om. | 2015-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um fair zu sein, es ist nicht das Problem in
MyBatis
, aber das Verhalten des XML-parsing.Wenn Sie nicht möchten, dass Charaktere wie
<
und&
analysiert werden, können Sie mit dem BegriffCDATA
um zu verhindern, dass der XML-parser analysieren Sie diesen text. Bitte http://www.w3schools.com/xml/xml_cdata.asp zum detail. Oder können Sie entkommen mit<
als Kommentare.I. E.
Ich glaube nicht, dass es ein guter Weg, um zu behandeln, es in MyBatis. Es sind noch einige tags, wie
<if>
,<foreach>
etc benötigt werden, um analysiert zu werden innerhalb<script>
, und es könnte mehr für die Zeit. Es ist nicht effizient und erweiterbar zu ändern, die gemeinsamen xml-parsing-Verhalten.Ich habe nicht gemeint, ändern Sie die XML-Verhalten, sondern um entweder standardmäßig cdata-tags oder HTML-Kodierung der Zeichen, die ähnlich wie "weniger als"
InformationsquelleAutor Landys