一.<if>标签
<if>
标签用于在 SQL 映射文件中根据条件来动态生成 SQL 语句的一部分。这使得我们可以根据不同的情况动态地包含或排除特定的 SQL 片段,示例如下:
<select id="TStorageRecordList" resultType="com.bdqn.entity.TStorageRecord">
select r.id , r.supplierId , r.goodsName , r.supplierId , p.supName , r.totalAmount , r.payStatus , r.createdTime from t_storage_record r
INNER JOIN t_supplier p on r.supplierId = p.id
where 1=1
<if test="goodsName != null">
and r.goodsName LIKE CONCAT('%',#{goodsName},'%')
</if>
<if test="supplierId != null ">
and r.supplierId = #{supplierId}
</if>
<if test="payStatus != null">
and r.payStatus = #{payStatus}
</if>
</select>
在<if>标签中,当test语句成立时才会将里面的语句拼接到SQL里面,从而实现动态的效果
二.<where>标签
<where>
标签通常用于动态生成 SQL 查询语句的 WHERE 子句。它可以帮助我们处理查询条件的拼接。
<select id="SupList" resultType="com.bdqn.entity.TSupplier">
SELECT id , supCode , supContact , supName , supContact , supPhone , supFax ,
createdTime FROM t_supplier
<where>
<if test="supCode != null and supCode != '' ">
AND supCode LIKE CONCAT('%',#{supCode},'%')
</if>
<if test="supCode != null and supCode != '' ">
AND supName LIKE CONCAT('%',#{supName},'%')
</if>
</where>
</select>
三.处理集合参数
-
数组类型参数
-
List类型参数
-
Map类型参数
<select id="getUserBySupplierIdList" resultType="com.bdqn.entity.TStorageRecord">
select * from t_storage_record
<where>
supplierId in
<foreach collection="supplierIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</where>
</select>
四.<set>标签
和<where>标签的功能类似,示例如下:
<update id="updSupplier">
update t_supplier
<set>
<if test="supName != null">
supName = #{supName},
</if>
<if test="supDesc != null">
supDesc = #{supDesc},
</if>
<if test="supPhone != null">
supPhone = #{supPhone},
</if>
</set>
where id = #{PId}
</update>
五.<trim>标签
<trim> 可以帮助我们处理 SQL 语句中的前缀、后缀或者指定的字符
在标签中可以指定四个属性:
- prefix 属性定义了在整个 SQL 语句片段前添加的字符串。
- suffix 属性定义了在整个 SQL 语句片段后添加的字符串。
- prefixOverrides 属性指定了需要在 SQL 语句片段开头移除的前缀字符串。
- suffixOverrides 属性指定了需要在 SQL 语句片段末尾移除的后缀字符串
<select id="selectPageList" resultType="com.bdqn.entity.TStorageRecord">
select * from t_storage_record
<trim prefix="where" prefixOverrides="and | or">
<if test="Pid != null and Pid != '' ">
and id like CONCAT('%',#{Pid},'%')
</if>
<if test="Rid != null and Rid != '' ">
and supplierId = #{Rid}
</if>
</trim>
</select>