[JAVA] Utiliser des opérateurs de comparaison d'inégalités dans MyBatis SQL

en premier

MyBatis définit et utilise des instructions SQL dans des fichiers XML, mais ne peut pas être utilisé car il s'agit de XML. Je ne l'ai pas remarqué et j'ai lancé une erreur Pourquoi! Quand j'ai frappé ce SQL sur la console, il pourrait être exécuté normalement! J'étais inquiet pendant une heure.

Environnement d'exécution

Exemple d'erreur

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

La clause WHERE qui utilise le nombre d'inégalité se met en colère.

contenu de l'erreur

Cause: org.xml.sax.SAXParseException; lineNumber: XX; columnNumber: XX;Le contenu de l'élément doit être constitué de données de caractères ou de balises bien formées.

Mesure d'amélioration ①

La méthode de clôture de la pièce en utilisant le nombre d'inégalité avec <![CDATA [...]]>.

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

Mesure d'amélioration ②

Il était normal d'inclure la clause SELECT entière comme dans l'exemple ci-dessous. Celui-ci est plus lisible. (Je ressens.)

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

Mesure d'amélioration ③

Il s'agit d'une méthode utilisant la référence d'entité fournie dans le commentaire. Après quelques recherches, il semble qu'il existe les 5 types suivants.

lettre Référence d'entité
< &lt;
> &gt;
& &amp;
'(Devis unique) &apos;
"(Double devis) &quot;

Décrit à l'aide d'une référence d'entité, cela ressemble à ceci:

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

À la fin

J'ai touché MyBatis pour la première fois, mais c'est pratique car je peux l'utiliser simplement en copiant et en appelant le SQL dont le fonctionnement a été confirmé. Le document officiel MyBatis a été traduit en japonais, et la quantité d'informations est abondante, il est donc facile à utiliser. Le SQL dynamique tel que if, choose et foreach sera résumé à une date ultérieure.

Les références

MyBatis - MyBatis 3 | Fichier XML du mappeur Référence de caractère et référence d'entité [norme XML]

Recommended Posts

Utiliser des opérateurs de comparaison d'inégalités dans MyBatis SQL
[JAVA] [Spring] [MyBatis] Utiliser IN () avec SQL Builder
[JAVA] [Spring] [MyBatis] Utiliser GROUP BY dans SQL Builder
Comparaison des chaînes MyBatis
Utilisez java.time avec Jackson
Utilisez Interceptor au printemps
Utiliser OpenCV avec Java
Utiliser MouseListener avec le traitement
Utiliser des images avec des rails
Utiliser PostgreSQL dans Scala
Utiliser PreparedStatement en Java
Comment utiliser le type d'énumération Java (Enum) dans Mapper XML de MyBatis