Mybatis ONL表式で動的sqlを処理する方法教程


この記事はMybatisのONL表現で動的sqlを処理する内容について紹介します。皆さんの参考になるように共有します。以下で詳細を紹介します。
よく使うMybatisダイナミックsqlタグは6つあります。
      1.if文(簡単な条件判断)
      2.chose(when、otherswize)は、Java言語のswitchに相当し、jstlのchoseに似ています。
      3.trim(含む内容にprefix、またはsuffixなど、プレフィックス、サフィックス)
      4.where(主にsql文のwhere条件判断を簡略化するために用いられます。知能的な処理ができます。and or、余計な文法ミスを招く心配はありません。)
      5.set(主に更新のため)
      6.foreach(mybatis in文のクエリを実現するには特に役に立つ)
(1)if
あいまい検索

<select id="select1" resultType="BaseresultMap"> 
 SELECT * FROM User WHERE Age = ‘18' 
 <if test="name != null"> 
 AND name like #{name} 
 </if> 
</select> 
年齢18歳で、名前をあいまいに検索できます。
(2)chose、when、otherswize
Jobパラメータが入ってきたら、仕事に対応する人を探し出します。そうでなければ、Jobがnoneである人を探し出します。すべての人ではなくて、

<select id="select2" resultType="BaseresultMap"> 
 SELECT * FROM User WHERE Age = ‘18' 
 
 <choose> 
 <when test="Job != null"> 
 AND Job =#{Job} 
 </when> 
 <otherwise> 
 AND Job="none" 
 
 </otherwise> 
 </choose> 
</select> 
(3)foreach

 <select id="select5" resultType="BaseresultBase"> 
 select * from User where id in 
 <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> 
  #{item} 
 </foreach> 
 </select> 
 
public List<User> select5(List<Integer> ids); 
(4)where set trim
where,set
なぜwhereを使うのですか?単純にwhere Andを書くとwhereと……ということになるかもしれません。状況の発生は、Setも同じです。
もちろんtrimタグは万能です。

<select id="select3" resultType="BaseresultMap"> 
 SELECT * FROM User 
<where> 
 
 <if test="Age != null"> 
 Age = #{Age} 
 </if> 
 <if test="Job != null"> 
 AND Job like #{Job} 
 </if> 
 
<where> 
</select> 
 
<update id="update1"> 
 update User 
 <set> 
 <if test="username != null">username=#{username},</if> 
 <if test="password != null">password=#{password},</if> 
 <if test="Age != null">Age =#{Age}</if> 
 </set> 
 where id=#{id} 
</update> 

<pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616" class="prettyprint lang-xml" name="code"><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616" name="code" class="html"><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_2_7439616"></pre> 
<pre></pre> 
<pre></pre> 
<p></p> 
<pre></pre> 
<pre></pre> 
<pre></pre> 
<pre code_snippet_id="2048504" snippet_file_name="blog_20161214_3_3393435" name="code" class="html"></pre><pre code_snippet_id="2048504" snippet_file_name="blog_20161214_3_3393435"></pre> 
<pre></pre> 
<pre></pre> 
<pre></pre> 
<pre></pre> 
<pre></pre> 
 
</pre><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" rel="external nofollow" ><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div></pre> 
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらすことを望んでいます。もし疑問があれば、メッセージを残して交流してください。ありがとうございます。