解决 Column count doesn‘t match value count at row 1 的可能思路
日期: 2020-12-05 分类: 个人收藏 393次阅读
今天遇到这个问题:Column count doesn’t match value count at row 1
很明显说的是列不匹配。
示例是 insert into user(colum1,colum2,colum3)
但是values是(字段1,字段2)这种信息。列名不匹配
我这次虽然报这个错误。但是原因是对mybatis的list插入不熟悉导致的。目前我还没想明白原因。但是暂时解决了
正确示例
<insert id="insertBillList" parameterType="com.deng.billsystem.pojo.entity.Bill">
insert into bill(userid,username,billdate,breakfastfee,lunchfee,dinnerfee,trafficfee,otherfee,otherfeeremark,createtime,updatetime)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.userId},#{item.username},#{item.billDate},#{item.breakfastFee},
#{item.lunchFee},#{item.dinnerFee},#{item.trafficFee},#{item.otherFee},
#{item.otherFeeRemark},#{item.createTime},#{item.updateTime}
)
</foreach>
</insert>
错误示例:主题foreach哪行 多了open和close: open="(" close=")"
但是select的时候是可以加上这两个的。目前insert不能加这两个原因我还没找到
<insert id="insertBillList" parameterType="com.deng.billsystem.pojo.entity.Bill">
insert into bill(userid,username,billdate,breakfastfee,lunchfee,dinnerfee,trafficfee,otherfee,otherfeeremark,createtime,updatetime)
values
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
(
#{item.userId},#{item.username},#{item.billDate},#{item.breakfastFee},
#{item.lunchFee},#{item.dinnerFee},#{item.trafficFee},#{item.otherFee},
#{item.otherFeeRemark},#{item.createTime},#{item.updateTime}
)
</foreach>
</insert>
2021年6月21日15:03:38 更新
哈哈哈,当时居然不知道是什么原因。其实原因很简单,是因为列的数目对不上,或者说是foreach的用法用的有问题,当时理解不到位
open和close: open="(" close=")"
会在最外层在包一层括号
举个例子,我需要的sql是
insert into demo(id,filed1,filed2)
values(1,"value1","value11"),(2,"value2","value22")
但是按照我那个写法。生成的语句是
insert into demo(id,filed1,filed2)
values((1,"value1","value11"),(2,"value2","value22"))
当然会有问题了
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:# 解决问题
精华推荐