1. <where>標籤java
至關於sql語句中的where關鍵字sql
<select id="getBy" resultMap="BaseResultMap" parameterType="java.util.Map" > select CONTENT, PHONE, CREATE_DATE, CREATE_TIME, SMS_TYPE, STATUS from sms_record <where> <if test="id != null ">id=#{id}</if> <if test="channelType != null and channelType != ''"> <![CDATA[ and CHANNEL_TYPE = #{channelType} ]]> </if> </where> </select>
2. <if>條件判斷標籤數據庫
條件判斷標籤,配置屬性test="條件字符串",判斷是否知足條件,知足則執行,不知足則跳過。code
3. <set>標籤字符串
配合<if>標籤在更新語句中使用,能夠判斷某個參數爲空或者不合法時不更新到數據庫。get
<update id="updateByPrimaryKey" parameterType="com.tech.facade.message.entity.SmsRecord" > update sms_record <set > <if test="PHONE != null" > PHONE = #{PHONE,jdbcType=VARCHAR}, </if> <if test="STATUS != null" > STATUS = #{STATUS,jdbcType=INTEGER}, </if> </set> where SMS_ID = #{smsId,jdbcType=BIGINT} </update>
4. <choose><when></when><otherwise></otherwise></choose> 標籤組it
條件判斷的標籤組,至關於Java的switch-case,匹配<when>中的條件,一旦匹配到立刻結束;若匹配不到,執行<other>中的語句。io
<!-- 查詢短信發送記錄list,channelType:通道類型(億美:YIMEI,)、 或=短信類型:smsType、 或=發送狀態:status(0,成功,其它失敗)使用choose --> <select id="getStudentListChooseEntity" parameterType="com.tech.facade.message.entity.SmsRecord" resultMap="BaseResultMap"> SELECT * from sms_record sr <where> <choose> <when test="channelType!=null and channelType!='' "> sr.channelType = #{channelType} </when> <when test="smsType!= null and smsType!= '' "> AND sr.SMS_TYPE = #{smsType} </when> <when test="status!=null" and status!='' "> AND sr.STATUS = #{status} </when> <otherwise> </otherwise> </choose> </where> </select>
5. <foreach>標籤test
<foreach>標籤實現sql條件的循壞,可完成相似批量的sql。變量
主要屬性:
<!-- 找出PID等於傳入ID列表的商品(父分類下的子商品)--> <select id="selectProductIn" resultType="com.test.Product"> SELECT * FROM PRODUCT P WHERE PID in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select>
<!--添加訂單商品表。由於一個訂單可能有多個商品,所以這裏進行批量添加。--> <insert id="addOrdergood" parameterType="java.util.List"><!-- parameterType="java.util.List"能夠省略,Mybatis會自動判斷參數類型。 --> insert into ordergood(oid,gid,count,price,allprice,profit) values <foreach collection="list" item="og" separator=","><!-- separator="," 不能夠省略;item="og"是集合中每個元素進行迭代時的別名,能夠隨便取。 --> (#{og.orders.oid},#{og.goods.gid},#{og.price},#{og.count},#{og.allprice},#{og.profit}) </foreach> </insert>