[JAVA] Verwenden Sie Ungleichheitsvergleichsoperatoren in MyBatis SQL

zunaechst

MyBatis definiert und verwendet SQL-Anweisungen in XML-Dateien, aber kann nicht verwendet werden, da es sich um XML handelt. Ich habe es nicht bemerkt und einen Fehler geworfen Warum! Wenn ich diese SQL auf der Konsole drücke, kann sie normal ausgeführt werden! Ich war eine Stunde lang besorgt.

Ausführungsumgebung

Beispiel eines Fehlers

<select id="hoge" resultType="hoge">
    SELECT
        *
    FROM
        HOGE
    WHERE
        HOGE.HOGE_DATE < SYSDATE
</select>

Die WHERE-Klausel, die die Ungleichungsnummer verwendet, wird wütend.

Fehlerinhalt

Cause: org.xml.sax.SAXParseException; lineNumber: XX; columnNumber: XX;Der Inhalt des Elements muss aus wohlgeformten Zeichendaten oder Markups bestehen.

Verbesserungsmaßnahme ①

Die Methode zum Einschließen des Teils unter Verwendung der Ungleichungszahl mit <![CDATA [...]]>.

<select id="hoge" resultType="hoge">
    SELECT
        *
    FROM
        HOGE
    WHERE
        HOGE_DATE <![CDATA[ < ]]> SYSDATE
</select>

Verbesserungsmaßnahme ②

Es war in Ordnung, die gesamte SELECT-Klausel wie im folgenden Beispiel einzuschließen. Dieser ist besser lesbar. (Ich fühle.)

<select id="hoge" resultType="hoge">
<![CDATA[ 
    SELECT
        *
    FROM
        HOGE
    WHERE
        HOGE_DATE < SYSDATE
]]>
</select>

Verbesserungsmaßnahme ③

Dies ist die Methode zur Verwendung der im Kommentar angegebenen Entitätsreferenz. Nach ein wenig Recherche scheint es die folgenden 5 Typen zu geben.

Brief Entitätsreferenz
< &lt;
> &gt;
& &amp;
'(Einfaches Angebot) &apos;
"(Doppeltes Zitat) &quot;

Mit einer Entitätsreferenz beschrieben, sieht es folgendermaßen aus:

<select id="hoge" resultType="hoge">
    SELECT
        *
    FROM
        HOGE
    WHERE
        HOGE_DATE &lt; SYSDATE
</select>

Am Ende

Ich berühre MyBatis zum ersten Mal, aber es ist praktisch, weil ich es nur durch Kopieren und Aufrufen der SQL verwenden kann, deren Funktion bestätigt wurde. Das offizielle MyBatis-Dokument wurde ins Japanische übersetzt, und die Menge an Informationen ist reichlich vorhanden, sodass es einfach zu verwenden ist. Dynamisches SQL wie if, select und foreach wird zu einem späteren Zeitpunkt zusammengefasst.

Verweise

MyBatis - MyBatis 3 | Mapper-XML-Datei Zeichenreferenz und Entitätsreferenz [XML-Standard]

Recommended Posts

Verwenden Sie Ungleichheitsvergleichsoperatoren in MyBatis SQL
[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
[JAVA] [Spring] [MyBatis] Verwenden Sie GROUP BY in SQL Builder
MyBatis-Zeichenfolgenvergleich
Verwenden Sie java.time mit Jackson
Verwenden Sie Interceptor im Frühjahr
Verwenden Sie OpenCV mit Java
Verwenden Sie MouseListener für die Verarbeitung
Verwenden Sie Bilder mit Schienen
Verwenden Sie PostgreSQL in Scala
Verwenden Sie PreparedStatement in Java
Verwendung des Java-Aufzählungstyps (Enum) in Mapper XML von MyBatis