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

业务场景:

使用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中属性不匹配,简直了,这个不知道之前是谁写的,所以驼峰式命名规范很重要!!!





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值