on duplicate key 引起的更新问题

<foreach collection="dataList" item="item" open="" close="" separator=";">
INSERT INTO testTable
(test1, test2,test3,test4,test5,timstamp)
VALUE
(
#{item.attr1},#{item.attr2},#{item.attr3},#{item.attr4},#{item.attr5},UNIX_TIMESTAMP()
)
ON DUPLICATE KEY
UPDATE
<if test = "item.attr4 != null">
test4 = #{item.attr4},
</if>
<if test = "item.attr5 != null">
test5 = #{item.attr5},
</if>
timstamp = UNIX_TIMESTAMP()
</foreach>

更新语句如上,dataList 里是bean实体类 ,test1, test2,test3组成复合主键,主要更新 test4 和test5 的值 。
当批量更新时 ,dataList bean 里面属性的值能保证都是全的,test4的值可以更新,但test5的值会更新不了,此时把 sql 打印出来,没有拼接 test5的语句,但attr5属性也不是null;后来把if 去掉后,sql语句都是全的,但test4变成null, test5还是更新不了,后来又控制了下参数dataList的大小, 问题还是没有解决。。。这条语句 就是时好时坏
有人遇到类似问题吗???


补充:这个可能是mybatis 填充 list参数时出了问题 ,打印了sql语句 和 参数数组,发现 test4 列对应的参数是null ,这就奇怪 ,dataList bean属性里面 test4是有值的。。。。

https://blog.csdn.net/li563868273/article/details/105213266

你的字段是什么类型的呢?有没有0的情况