91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis中怎么實現動態SQL語句

發布時間:2021-08-06 16:14:27 來源:億速云 閱讀:110 作者:Leah 欄目:編程語言

MyBatis中怎么實現動態SQL語句,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1. 動態SQL之<if>標簽

我們根據實體類的不同取值,使用不同的SQL語句來進行查詢。比如在id如果不為空時可以根據id查詢,如果username不為空時還要加入用戶名作為條件,這種情況在我們的多條件組合查詢中經常會碰到。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.joker.dao.IUserDao">  <select id="findByUser" resultType="user" parameterType="user"> select * from user where 1=1 <if test="username!=null and username != '' ">  and username like #{username} </if> <if test="address != null">  and address like #{address} </if> </select></mapper>

注意:<if>標簽的test屬性中寫的是對象的屬性名,如果是包裝類的對象要使用OGNL表達式的寫法。另外要注意where 1=1的作用。

2. 動態SQL之<where>標簽

為了簡化上面where 1=1的條件拼裝,我們可以采用<where>標簽來簡化開發。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.joker.dao.IUserDao">  <select id="findByUser" resultType="user" parameterType="user"> select * from user <where>  <if test="username!=null and username != '' ">  and username like #{username}  </if>  <if test="address != null">  and address like #{address}  </if> </where> </select></mapper>

3. 動態SQL之<foreach>標簽

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.joker.dao.IUserDao">  <!-- 查詢所有用戶在 id的集合之中  foreach標簽:用于遍歷集合  * collection:代表要遍歷的集合元素,注意編寫時不要寫 #{}  * open:代表語句的開始部分  * close:代表結束部分  * item:代表遍歷集合的每個元素,生成的變量名  * sperator:代表分隔符 --> <select id="findInIds" resultType="user" parameterType="queryvo"> select * from user <where>  <if test="ids != null and ids.size() > 0">  <foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">   #{uid}  </foreach>  </if> </where> </select></mapper>

4. MyBatis中的SQL片段

MyBatis的sql中可將重復的sql提取出來,使用時用include引用即可,最終達到sql重用的目的。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.joker.dao.IUserDao">  <!-- 抽取重復的語句代碼片段 --> <sql id="defaultSql"> select * from user </sql> <select id="findAll" resultType="user"> <include refid="defaultSql"></include> </select>  <select id="findById" resultType="User" parameterType="int"> <include refid="defaultSql"></include> where id = #{uid} </select></mapper>

關于MyBatis中怎么實現動態SQL語句問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳州市| 江城| 克山县| 日喀则市| 若羌县| 乾安县| 唐河县| 安庆市| 惠安县| 九寨沟县| 土默特右旗| 驻马店市| 东至县| 平南县| 牡丹江市| 扎囊县| 三原县| 怀柔区| 威宁| 扎兰屯市| 桦川县| 凌源市| 玉溪市| 精河县| 奉贤区| 松江区| 抚宁县| 长丰县| 历史| 美姑县| 郧西县| 克什克腾旗| 同江市| 襄垣县| 呼伦贝尔市| 洞头县| 周至县| 三都| 夹江县| 泾阳县| 焦作市|