mybatis if test 不为空字符串或null的解决
在奋斗的大道 人气:0mybatis if test 不为空字符串或null
<sql id="public_content"> <if test="productId != null and productId !=''" > and a.product_id = #{productId,jdbcType=VARCHAR} </if> <if test="productDefinId != null" > and a.product_defin_id = #{productDefinId,jdbcType=VARCHAR} </if> <if test="productUid != null and productUid !=''"> and a.product_uid = #{productUid,jdbcType=VARCHAR} </if> <if test="productKey != null" > and a.product_key = #{productKey,jdbcType=VARCHAR} </if> <if test="prouuctSecret != null" > and a.prouuct_secret = #{prouuctSecret,jdbcType=VARCHAR} </if> <if test="productPass != null" > and a.product_pass = #{productPass,jdbcType=VARCHAR} </if> <if test="productVisitPass != null" > and a.product_visit_pass = #{productVisitPass,jdbcType=VARCHAR} </if> <if test="createTime != null and createTime !=''" > and a.create_time = #{createTime,jdbcType=VARCHAR} </if> <if test="pageSize != null and pageNum !=null " > ORDER BY a.product_id DESC limit #{pageNum},#{pageSize} </if> </sql>
mybatis中if test判断数值字符串注意项
<if test="cutList != null"> <if test="isInterrupt == '1'.toString() "> AND A.basic_id IN ( <foreach collection="cutList" item="item" index="index" separator="," > #{item} </foreach> ) </if> <if test="isInterrupt == '0'.toString() "> AND A.basic_id NOT IN ( <foreach collection="cutList" item="item" index="index" separator="," > #{item} </foreach> ) </if> </if>
1. Mybatis中 if test 判断数值字符串注意项
if test 判断是否为某一数值字符串时需在数值字符串后加上toString()方法
如:
<if test="isInterrupt == '1'.toString() ">
2. Mybatis中遍历list入参
此处还有个知识点是mybatis使用foreach标签来遍历入参list。
如:
<if test="isInterrupt == '1'.toString() "> AND A.basic_id IN ( <foreach collection="cutList" item="item" index="index" separator="," > #{item} </foreach> ) </if>
collection为需遍历数组,item为当前循环的变量,index为计数器,separator=","指循环一次则以“,”分隔
这里IN 的()可以直接用open="(" close=")"属性设置
<foreach collection="cutList" item="item" index="index" open="(" close=")" separator="," >
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
加载全部内容