1. 报错 (mybatis)
nested exception is org.apache.ibatis.binding.BindingException:
Parameter ‘goodsName’ not found. Available parameters are [goodsId, param1, param2, goods]
2. 原因
xxxMapper.xml映射没有得到传入的参数。
2.1 xxxDao中
- 没有加上@Param注解;
- 该注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中;
- 不使用@Param注解时,参数只能有一个,并且是Javabean。所以参数是一个对象时一定要加上该注解。
/**
* 增加商品
* @param goods 商品信息
*/
void addGoods(@Param("goods")Goods goods);
2.2 xxxMapper.xml中
当传入的参数是一个对象时,在mapperxml中写SQL语句时要通过对象获取对象内的具体值。
/*
* Dao层中该方法传入的参数是一个Goods对象
*/
void addGoods(@Param("goods")Goods goods);
<!-- 错误写法 -->
goods_name=#{goodsName,jdbcType=VARCHAR}
<!-- 正确写法 -->
goods_name=#{goods.goodsName,jdbcType=VARCHAR}
本文解析了MyBatis在参数传递过程中常见的错误,详细解释了如何使用@Param注解来正确命名参数,确保参数能准确地传入SQL语句中,避免因参数名不匹配导致的BindingException异常。
5658

被折叠的 条评论
为什么被折叠?



