ホームページ  >  記事  >  mybatis動的SQLとは何ですか

mybatis動的SQLとは何ですか

anonymity
anonymityオリジナル
2019-05-09 16:14:4612431ブラウズ

MyBatis の動的 SQL は、SQL ステートメントの柔軟な操作を指します。OGNL 式に基づいており、if、choose、when、otherwise、trim、where、set、foreach タグ、アセンブリを通じて SQL ステートメントを柔軟につなぎ合わせます。したがって、開発者の効率が向上します。

mybatis動的SQLとは何ですか

#動的 SQL とは何ですか?動的 SQL の役割は何ですか?

mybatis core SQL ステートメントに対して柔軟な操作を実行し、式を通じて判断し、SQL を柔軟に結合して組み立てます。

従来の JDBC の使い方では、複雑な SQL 文を組み合わせる場合はつなぎ合わせる必要があると思いますが、注意しないとスペースが抜けただけでもエラーになります。 Mybatis の動的 SQL 関数は、この問題を解決するために設計されており、if、choose、when、otherwise、trim、where、set、foreach タグを通じて非常に柔軟な SQL ステートメントに組み合わせることができるため、開発者の効率が向上します

MyBatis は OGNL を使用して動的 SQL を使用します。

現在、動的 SQL は次のタグをサポートしています

mybatis動的SQLとは何ですか

例: if ステートメントはユーザー名とユーザー名に応じて

を使用します。データをクエリするには性別を使用します。ユーザー名が空の場合は、性別に基づいてのみクエリが実行されます。それ以外の場合は、ユーザー名に基づいてのみクエリが実行されます

#まず、上記のクエリ ステートメントを記述するために動的 SQL を使用しないでください

<select id="selectUserByUsernameAndSex"
        resultType="user" parameterType="com.ys.po.User">
    <!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id,
            写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 -->
    select * from user where username=#{username} and sex=#{sex}
</select>
, #{username} が空の場合、クエリ結果も空であることがわかります。この問題を解決するにはどうすればよいですか?

if を使用して決定する

<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>
このように書くと、性別が null に等しい場合、クエリ ステートメントは

select * from user であることがわかります。ここで、ユーザー名=# {ユーザー名}

以上がmybatis動的SQLとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。