(三)MyBatis学习之多个报错Parameter 'xxxx' not found. Available parameters are [arg1, arg0, param1, param2]
2018-01-31 14:49
2371 查看
在myBatis中,如果SQL语句需要两条或两条以上数据时,如果按如下写法可能会出现Parameter ‘xxxx’ not found. Available parameters are [arg1, arg0, param1, param2]的错误:
注解开发中错误的写法
正确写法
配置开发中错误的写法
正确的写法
*如#{0},#{1}依然报错,请更改成#{arg0},#{arg1},也可以在mapper类中加@Param()
原因:在myBatis中SQL语句需要多个参数时会做特殊处理,多个参数会被封装成一个map,#{}就是从map中获取指定key的值(key:param1…paramN,value:传入的参数值),不能使用#{参数名称}进行参数的接收,所以要写成#{param1},#{param2}或者#{0},#{1}(mybatis3.4.2之前的版本,之后的版本用#{arg0},#{arg1}),也可以使用命名参数,明确指定封装参数时map的key,即在mapper类中使用@Param()注解。
POJO:如果多个参数正好是业务逻辑的数据模型,我们就可以直接传入pojo,即:#{属性名}
Map:如果多个参数不是业务模型中的数据,没有pojo,为了方便,也可以传入map,即:#{key}
To:如果多个蚕食不是业务模型中的数据,但是经常要使用,推荐编写一个Transfer Object,传输数据对象,例:
注解开发中错误的写法
@Select("select * from emp_table where userId=#{usereId} and user_name =#{userName} List<Employee> selectEmployee(Integer userId,String userName);
正确写法
@Select("select * from emp_table where userId=#{usereId} and user_name =#{userName} List<Employee> selectEmployee(@Param("userId") Integer userId,@Param("userName") String userName);
配置开发中错误的写法
<update id="updateById"> update emp_table set user_name=#{userName} where user_id =#{userId} </update>
正确的写法
<update id="updateById"> update emp_table set user_name=#{0} where user_id =#{1} </update>
*如#{0},#{1}依然报错,请更改成#{arg0},#{arg1},也可以在mapper类中加@Param()
原因:在myBatis中SQL语句需要多个参数时会做特殊处理,多个参数会被封装成一个map,#{}就是从map中获取指定key的值(key:param1…paramN,value:传入的参数值),不能使用#{参数名称}进行参数的接收,所以要写成#{param1},#{param2}或者#{0},#{1}(mybatis3.4.2之前的版本,之后的版本用#{arg0},#{arg1}),也可以使用命名参数,明确指定封装参数时map的key,即在mapper类中使用@Param()注解。
POJO:如果多个参数正好是业务逻辑的数据模型,我们就可以直接传入pojo,即:#{属性名}
Map:如果多个参数不是业务模型中的数据,没有pojo,为了方便,也可以传入map,即:#{key}
To:如果多个蚕食不是业务模型中的数据,但是经常要使用,推荐编写一个Transfer Object,传输数据对象,例:
Page{ int index; int size; }
相关文章推荐
- MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]
- MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]
- MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, par
- Mybatis:Parameter '***' not found. Available parameters are [arg1, arg0, param1, param2]
- Mybatis SQL 报错:Parameter 'position' not found. Available parameters are [arg2, arg1, arg0。。。
- Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
- Parameter 'offset' not found. Available parameters are [arg1, arg0, param1, param2]
- Parameter 'loginname' not found. Available parameters are [arg1, arg0, param
- Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
- 为什么id' not found. Available parameters are [arg1, arg0, param1, param2] at org.mybatis.spring.MyBat
- mybatis:Parameter 'list' not found. Available parameters are [templateId, param1, param2, valueList]
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]或者Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- 错误记录系列一Parameter 'xxxx' not found. Available parameters are [0, 1, param1, param2]] with root cause
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- MyBatis报错: Parameter '*' not found. Available parameters are [1, 0, param1, param2]
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- mybatis报错 Parameter 'list' not found. Available parameters are [1, 0, param1, param2]