账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Mybatis非空判断没有生效
    30
    0

    使用mybatis updateByPrimaryKeySelective方法来更新语句,但是null值也传过去了。

    Mapper.xml

      <update id="updateByPrimaryKeySelective">
        update zzbizorder_#{tableIndex}
        <set>
          <if test="#{record.clickid != null}">
            clickid = #{record.clickid,jdbcType=BIGINT},
          </if>
          <if test="#{record.xxxx != null}">
            clickid = #{record.xxxx,jdbcType=BIGINT},
          </if>
          <if test="#{record.xxxx != null}">
            clickid = #{record.xxxx,jdbcType=BIGINT},
          </if>
          <if test="#{record.xxxx != null}">
            clickid = #{record.xxxx,jdbcType=BIGINT},
          </if>
          <if test="#{record.xxxx != null}">
            clickid = #{record.xxxx,jdbcType=BIGINT},
          </if>
        </set>

    Mapper.class

    public interface OrderEntityMapper {
    
        int insertSelective(@Param("tableIndex") Integer tableIndex, @Param("record") OrderEntity record);
    
        int updateByPrimaryKeySelective(@Param("tableIndex") Integer tableIndex, @Param("record") OrderEntity record);
    
    }

    程序打印的SQL语句:

    JDBC Connection [com.mysql.jdbc.JDBC4Connection@377008df] will not be managed by Spring
    ==>  Preparing: update order_? SET clickid = ?, xxxx = ?, xxxx = ?, xxxx = ?, xxxx = ?, where id = ? 
    ==> Parameters: 0(Integer), null, null, null, null
    <==    Updates: 1

    clickid为null,但是也set了,请问这是什么原因呢。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ゾ硪鍀泪倪卟懂 普通会员 1楼

      在Mybatis中,如果使用了非空判断,但是仍然没有生效,可能有以下几种情况:

      1. 没有正确配置好实体类的属性:在定义Java类的时候,应该在属性名上加上对应的Java数据类型,以保证在数据库中对应的属性是唯一的。例如,如果属性名为"username",则对应的Java数据类型应为"java.lang.String"。

      2. 在Java配置文件中没有使用<if>标签:在Mybatis的配置文件中,应该使用<if>标签来实现非空判断。例如,如果需要判断用户名是否为空,可以添加以下代码:

      xml <if test="username != null"> username cannot be null </if>

      1. 在Java代码中没有正确执行非空判断:在Java代码中,应该正确使用if标签,并在条件判断之后执行相应的逻辑。例如,如果需要判断用户名是否为空,可以添加以下代码:

      java if (username != null) { // username is not null }

      1. 在Mybatis的SQL语句中使用了不正确的SQL语句:在Mybatis的SQL语句中,应该使用正确的SQL语句来实现非空判断。例如,如果需要判断用户名是否为空,可以添加以下代码:

      sql SELECT * FROM users WHERE username IS NOT NULL

      以上就是一些可能导致Mybatis非空判断没有生效的情况,希望对你有所帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部