nested exception is org.apache.ibatis.binding.BindingException: Parameter çollection'not found. Available parameters are [depId, userList, operator, param3, param1, param2]
工具:mybatis+pgsql
案例1
dao层
void insert(String depId, String operator, List<User> userList);
sql
<insert id = "insert" parameterType = "java.util.ArrayList">
insert into user (username,sex,depId,create_by)
values
<foreach collection="collection" separator="," item="val">
(#{val.username}, #{val.sex}, #{depId}, #{create_by})
</foreach>
</insert>
执行后抛出异常信息:
"nested exception is org.apache.ibatis.binding.BindingException: Parameter 'collection' not found. Available parameters are [depId, userList, operator, param3, param1, param2]"
错误原因:parameterType = “java.util.ArrayList”,但是dao层参数类型是map,不匹配导致的。修改代码如下:
dao层: @Param
void insert(@Param("depId") String depId,
@Param("operator") String operator,
@Param("userList") List<User> userList);
sql: parameterType = "java.util.HashMap"
<insert id = "insert" parameterType = "java.util.HashMap">
insert into user (username,sex,depId,create_by)
values
<foreach collection="collection" separator="," item="val">
(#{val.username}, #{val.sex}, #{depId}, #{create_by})
</foreach>
</insert>
案例2
dao层
List<User> select(List<User> userList);
sql
<select id = "select" parameterType = "java.util.ArrayList" returnType = "com.dto.User">
select *
from user
where id in
<foreach collection="userList" separator="," item="user" open="(" close=")">
#{user.username}
</foreach>
</select>
执行后抛出异常信息:
"nested exception is org.apache.ibatis.binding.BindingException: Parameter 'userList' not found. Available parameters are [collection, list]"
解决方案一:
dao层: @Param
void insert(@Param("userList") List<User> userList);
解决方案二:
sql: collection="collection" 或者 collection="list"
<select id = "select" parameterType = "java.util.ArrayList" returnType = "com.dto.User">
select *
from user
where id in
<foreach collection="collection" separator="," item="user" open="(" close=")">
#{user.username}
</foreach>
</select>
在使用MyBatis进行数据库操作时,遇到Parameter 'collection'未找到的问题。错误源于dao层参数类型与sql中parameterType不匹配。案例1中,参数类型应从ArrayList改为Map。案例2提供了两种解决方案,一是调整dao层方法,二是修改sql语句中的parameterType。
908

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



