您的位置:首页 > 大数据 > 人工智能

解决Parameter '__frch_item_0' not found. Available parameters are [list]

2018-01-27 12:30 851 查看

业务场景:

使用mysql+mybatis进行批量插入时报出如下错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]在使用批量插入时我们通常在DAO层定义一个接口方法,然后在对应的mapper.xml中实现相应的sql语句,具体方法如下:
DAO层:
public interface ObInternalCheckSerialNoDTODao {
boolean insertObInternalCheckSerialnoDTO(List<ObInternalCheckSerialNoDTO> checkSerialNoDTOList);
}
在mapper.xml中的实现:
<insert id="batchInsert" parameterType="java.util.List">
insert into OB_INTERNAL_CHECK_SERIALNO
(OUTBOUND_NO,GOODS_NO,GOODS_NAME,GOODS_SERILNO,TRANS_SN,BOX_NO,CREATE_TIME,
CREATE_USER,UPDATE_USER,UPDATE_TIME,ORG_NO,DISTRIBUTE_NO,WAREHOUSE_NO)
values
<foreach collection="list" index="index" item="item" separator=",">
(
#{item.outboundNo,jdbcType=VARCHAR},#{item.goodsNo,jdbcType=VARCHAR},#{item.goodsName,jdbcType=VARCHAR},#{item.goodsSerialNo,jdbcType=VARCHAR},
#{item.transSn,jdbcType=VARCHAR},#{item.boxNo,jdbcType=VARCHAR},now(),#{item.createUser,jdbcType=VARCHAR},#{item.updateUser,jdbcType=VARCHAR},now(),
#{item.orgNo,jdbcType=VARCHAR},#{item.distributeNo,jdbcType=VARCHAR},#{item.ware
HouseNo,jdbcType=VARCHAR}
)
</foreach>
</insert>
实例对象:
public class ObInternalCheckSerialNoDTO {

public String outboundNo;
public String goodsNo;
public String goodsName;
public String goodsSerialNo;
public String transSn;
public String boxNo;
//...省略其他属性
public String orgNo;
public String distributeNo;
public String warehouseNo;

解决办法:

网上查了好多方法,自己也调试了半天,一直没有找出错误,最后找到一篇比较靠谱的解决方法,说是出现这种情况,一般都是对象属性与mapper中的属性不一致导致的,那就直接去找对象属性(其实这样代码单独贴出来错误已经很明显了)这里一个小tip,使用复制对象属性去查找mapper中的属性,Ctrl+F时记得开大小写匹配(ps:之前没开找了好几次也没找到哈哈),最后定位到问题所在,wareHouseNo与mapper中属性不匹配,简直了,这个不知道之前是谁写的,所以驼峰式命名规范很重要!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql mybatis
相关文章推荐