</trim> </select>

默认生成的是这样,当没有传递任何一个where后面的条件的时候就会报错
试了
好几种

<trim prefixOverrides="where" suffixOverrides="and">
      <if test="payStatus != null" >
        where pay_status = #{payStatus,jdbcType=INTEGER} and,
      </if>
 </trim>

解决方案:
转载:https://www.cnblogs.com/qq1141100952com/p/10478047.html

mybatis动态拼接条件的技巧 where 1=1 或者where标签
/**
* 根据输入的学生信息进行条件检索
* 1. 当只输入用户名时, 使用用户名进行模糊检索;
* 2. 当只输入邮箱时, 使用性别进行完全匹配
* 3. 当用户名和性别都存在时, 用这两个条件进行查询匹配的用
* @param student
* @return
*/

<select >
    select
    <include ref />
    from student
    where 1=1
    <if test="name != null and name !=''">
      and name like concat('%', #{name}, '%')
    </if>
    <if test="sex != null">
      and sex=#{sex}
    </if>
  </select>

mybatis动态拼接条件的技巧:

技巧一:where 1=1 ,此时,就可以根据name,sex是否为空就可以查询了

技巧二:放在where标签里面

<select >
    select
    <include ref />
    from student
 < where>
    <if test="name != null and name !=''">
      and name like concat('%', #{name}, '%')
    </if>
    <if test="sex != null">
      and sex=#{sex}
    </if>

</where>

</select>

动态更新(判断是否为空)

<update >
    update student
    <set>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      </if>
      <if test="phone != null">
        phone = #{phone,jdbcType=VARCHAR},
      </if>
      <if test="email != null">
        email = #{email,jdbcType=VARCHAR},
      </if>
      <if test="sex != null">
        sex = #{sex,jdbcType=TINYINT},
      </if>
      <if test="locked != null">
        locked = #{locked,jdbcType=TINYINT},
      </if>
      <if test="gmtCreated != null">
        gmt_created = #{gmtCreated,jdbcType=TIMESTAMP},
      </if>
      <if test="gmtModified != null">
        gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},
      </if>
    </set>
    where student_id = #{studentId,jdbcType=INTEGER}
原文地址:https://blog.csdn.net/flower_CSDN/article/details/100022000

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2022-01-22
  • 2021-10-05
猜你喜欢
  • 2021-12-10
  • 2021-09-28
  • 2021-07-18
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案