MyBatisの下に、動的SQLを理解するためにあなたに1分を持っていこう!

MyBatisのの強力な機能の1つは、今スペースに注意を払う必要性に、最後のコンマのリスト、およびは、手動で処理することができない、スプライシング前に、MyBatisのは、以下のことを実現するために、強力な表現ベースのOGNLを使用して、その動的SQLですこれは、次をご紹介します。

A、もしラベル

文は、最も一般的であるかどうかを決定する、主にいくつかの簡単な条件選択を実装するために使用されます。次のように基本的な使用例は次のとおりです。

    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user where 1=1
        <if test="name != null and name != ''">
            and name = #{name}
        </if>
        <if test="age != null ">
            and age = #{age}
        </if>
    </select>

二、ラベル

上記の例の使用において、「1 = 1」は、フォローアップ状況を回避するためにときにエラーを満たし、そしてそのようなアプローチ、それを回避する方法がないことではないですか?
コースの次を言うことが起こっています ラベルは、ラベルは、コンテンツが最終的に先頭に戻り、又はあるいは、自動的に上記の例で、うち削除される予定されている場合、値を返すタグ、次いで、「」SQLに挿入され、含まれている場合は自動的に決定次のように言葉で表現「どこで」ラベルの後に置き換え:

    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user 
        <where>
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="age != null ">
                and age = #{age}
            </if>
        </where>
    </select>

三、トリムラベル

効果は、特別な文字列のプレフィックスを削除することですprefix属性にその声明を表し、prefixOverridesは特別な文字列に代わってプロパティを削除する必要があり、prefixOverridesプロパティは、テキスト配列がパイプ(この場合にはスペースが必要であることに注意)で区切ら無視、治療の接頭辞と接尾辞として。

タグには、以下の主な属性は、トリムました

  • 接頭辞:接頭辞のカバレッジとその含有量を増加させます。
  • サフィックス:サフィックスのカバレッジとその含有量を増加させます。
  • prefixOverrides:プレフィックス決意条件。
  • suffixOverrides:サフィックス決意条件。

ここでは2つの例を示します。

  1. prefix属性
    <select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user
        <trim prefix="WHERE" prefixOverrides="AND |OR " >
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="sex != null ">
                or sex = #{sex}
            </if>
            <if test="age != null ">
                and age = #{age}
            </if>
        </trim>
    </select>
  1. サフィックスプロパティ
<update id="update" parameterType="Object">
        UPDATE user
        <trim suffix=" SET " suffixOverrides=",">
            <if test="id != null ">id=#{id},</if>
            <if test="name != null ">name=#{name},</if>
            <if test="age != null ">age=#{age},</if>
        </trim>
        WHERE ID=#{id}
    </update>

IV。 タグ

効果は、コレクションを通じて、それはしばしば組み合わせて、よりSQLで、設定されたインタフェースのコレクションを、配列やリストをサポートすることができます。

タグは、次の主要な属性を持っていますforeach

  • 項目:ループの現在の要素を表します。
  • インデックス:マークがセット位置にある現在の要素を表しています。
  • コレクション:設定した属性名のリストのように。
  • 開閉:要素のセットをラップしますこれらのシンボルの構成は何ですか。
  • セパレータ:スペーサーは、個々の要素が配置されています。

例えば:

<select id="queryAllUsersByName" resultType="com.example.springboot.mybatisxml.entity.User">
        select * from user where id in
        <foreach item="id" index="index" collection="userList"
                 open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>

共通の特徴は、上に導入されているこのダイナミックSQLはMyBatisの、ああを通信するためのメッセージを残してください質問があります!

推奨読書

春のセキュリティであなたに1分を取る1.!
使用MyBatisの発電用のコードを生成自動的に学習するためにあなたに1分を取る2.!
あなたの7種類の戦闘の下で春のトランザクション伝播の動作と3手
統合MyBatisの(注釈モード) - 4.SpringBootシリーズ
5.SpringBootシリーズ-統合MyBatisの(XML構成)


Javaの迷惑なチャタリング、元の数に公共の付着、申し出システムアーキテクチャ、マイクロサービス、Javaの、SpringBoot、SpringCloud他の高品質な技術記事の範囲。
あなたは記事が良いと思われる場合は、希望が容易に転送することができたり、「見て」ああ、あなたはとてもヘクタールをありがとう!
「1024」の下で世間の注目の後には返信があなたのために驚きを持っていません!

ブログ記事複数のプラットフォームからこの記事OpenWriteリリース!

おすすめ

転載: www.cnblogs.com/haha12/p/11904224.html