Maison >Problème commun >Qu'est-ce que le SQL dynamique mybatis

Qu'est-ce que le SQL dynamique mybatis

anonymity
anonymityoriginal
2019-05-09 16:14:4612568parcourir

Le SQL dynamique de MyBatis fait référence au fonctionnement flexible des instructions SQL ; il est basé sur des expressions OGNL et fusionne de manière flexible les instructions SQL via les balises if, Choose, When, Sinon, Trim, Where, Set et Foreach, Assembly. , améliorant ainsi l'efficacité des développeurs.

Qu'est-ce que le SQL dynamique mybatis

Qu'est-ce que le SQL dynamique ? Quel est le rôle du SQL dynamique ?

mybatis core effectue des opérations flexibles sur les instructions SQL, juge à l'aide d'expressions et assemble et assemble SQL de manière flexible.

Avec la méthode traditionnelle d'utilisation de JDBC, je pense que lorsque vous combinez des instructions SQL complexes, vous devez les assembler. Si vous n'y prêtez pas attention, même si vous manquez un espace, cela entraînera. erreurs. La fonction SQL dynamique de Mybatis est conçue pour résoudre ce problème. Elle peut être combinée en instructions SQL très flexibles via les balises if, Choose, When, Sinon, Trim, Where, Set et Foreach, améliorant ainsi l'efficacité des développeurs

MyBatis utilise OGNL pour utiliser du SQL dynamique.

Actuellement, le SQL dynamique prend en charge les balises suivantes

Qu'est-ce que le SQL dynamique mybatis

Exemple : l'instruction if utilise

en fonction du nom d'utilisateur et sexe pour interroger les données. Si le nom d'utilisateur est vide, alors seul le sexe sera interrogé ; sinon, seul le nom d'utilisateur sera interrogé

Tout d'abord, n'utilisez pas de SQL dynamique pour écrire l'instruction de requête ci-dessus

<select id="selectUserByUsernameAndSex"
        resultType="user" parameterType="com.ys.po.User">
    <!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id,
            写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 -->
    select * from user where username=#{username} and sex=#{sex}
</select>
<.>. Nous pouvons constater que si #{username} est vide, alors le résultat de la requête est également vide. Comment résoudre ce problème ?

Utilisez if pour déterminer

<select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User">
    select * from user where
        <if test="username != null">
           username=#{username}
        </if>
         
        <if test="username != null">
           and sex=#{sex}
        </if>
</select>

Écrit comme ceci, nous pouvons voir que si le sexe est égal à null, alors l'instruction de requête est

. select * from user where username=#{username}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn