鄙人才疏学浅,但是还是想吐槽下,mybatis这异常说明确实让人费解。
网上关于这个问题说明不少,基本是关于collection属性值有误,或是在使用list的元素对象中的成员变量时 搞错了名字之类的。
我是盯着看了好一会儿 也没发现我的代码里出现了上述错误,还以为mybatis的当前版本无法正常遍历list。[汗]
但是查bug贵在坚持,最后还是找出了问题:
我其实就是搞错了元素对象中的成员变量名,因为这里的名字大小写敏感!
仔细想想,这里是必须敏感的,如果java对象中,两个成员变量的名字只有大小写的区别,但在mybatis中不区分大小写的话,那这里岂不是处理不了了。
这里还是放上代码吧
<insert id="insertBatch" parameterType="java.util.List">
insert into BIGTABLE (PID)
<foreach collection="list" item="item" open="(" separator="union" close=")">
select #{item.pid,jdbcType=DECIMAL} from dual
<!-- 上面的pid在修改之前是PID,导致了标题所述异常 -->
</foreach >
</insert>
public class BigTable {
private Long pid;
public Long getPid() {
return pid;
}
public void setPid(Long pid) {
this.pid = pid;
}
}
工作中,像这样让人哭笑不得的问题多得是,还是得有个好心态啊。。