org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zpark.ssm.mapper.GoodsMapper.deleteBatchIds
时间: 2023-11-27 12:48:19 浏览: 126
这个错误通常是因为MyBatis找不到对应的SQL语句,可能是因为SQL语句没有被正确地映射到Mapper接口方法上。在你的情况下,可能是由于你将SQL语句从注解方式转换为XML文件方式,但是MyBatis没有正确地引用这个XML文件。
你可以按照以下步骤来解决这个问题:
1. 确认你的Mapper接口方法名和XML文件中的SQL语句ID是否一致。
2. 确认你的XML文件是否被正确地引用到了MyBatis的配置文件中。你可以在MyBatis的配置文件中添加以下内容来引用XML文件:
```xml
<mappers>
<mapper resource="com/xxx/mapper/xxxMapper.xml"/>
</mappers>
```
其中,`resource`属性的值应该是你的XML文件的路径。
3. 确认你的XML文件中是否有对应的SQL语句。你可以在XML文件中添加以下内容来定义SQL语句:
```xml
<select id="selectxxx" parameterType="xxx" resultType="xxx">
select * from xxx
</select>
```
其中,`id`属性的值应该是你的Mapper接口方法名,`parameterType`属性的值应该是你的方法参数类型,`resultType`属性的值应该是你的返回值类型。
如果你的SQL语句是动态生成的,你可以使用`<sql>`和`<include>`标签来定义和引用动态SQL语句。
```xml
<sql id="whereClause">
<where>
<if test="name != null">
name = #{name}
</if>
<if test="age != null">
and age = #{age}
</if>
</where>
</sql>
<select id="selectxxx" parameterType="xxx" resultType="xxx">
select * from xxx
<include refid="whereClause"/>
</select>
```
其中,`<sql>`标签定义了一个名为`whereClause`的动态SQL语句,`<if>`标签用于根据参数值动态生成SQL语句,`<include>`标签用于引用动态SQL语句。
阅读全文