Mybatis中的動態sql怎么利用OGNL表達式進行處理?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
常用的Mybatis動態sql標簽有6種:
1. if 語句 (簡單的條件判斷)
2. choose (when,otherwize) ,相當于Java 語言中的 switch ,與 jstl 中的choose 很類似.
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)choose,when,otherwize
當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可能會導致 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="https://cache.yisu.com/upload/information/20200623/121/113452.png"></a></div></pre>
看完上述內容,你們掌握Mybatis中的動態sql怎么利用OGNL表達式進行處理的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。