解决mybatis-plus通用mapper调用报错“Invalid bound statement”的完整攻略如下:
问题背景
在使用mybatis-plus时,常常会使用它提供的通用Mapper进行数据库操作。但是,有时候会出现以下错误报告:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.mapper.UserMapper.selectById
这个错误通常发生在使用通用Mapper进行查询操作时,提示找不到对应的mapper方法。
解决方法
- 检查mapper接口和xml文件是否存在
首先,确认Mapper接口和xml文件是否存在。例如,以查询用户信息为例:
public interface UserMapper extends BaseMapper<User> {
User selectById(Long id);
}
<select id="selectById" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
在运行时,mybatis-plus根据这个Mapper接口的方法名字来查找对应的xml文件中的sql语句。因此,请确保mapper的接口和xml文件都存在且名称一致。
- 声明Mapper接口的@Mapper注解
在Mapper接口中添加@Mapper(Type.class)注解声明。例如:
@Mapper
public interface UserMapper extends BaseMapper<User> {
User selectById(Long id);
}
这个注解声明了一个Mapper类型,告诉Mybatis-Plus要去哪里查找对应的xml文件。在注解中可以指定对应的xml文件,从而避免了在xml文件中使用namespace配置。
示例
下面是两个示例,用于演示解决“Invalid bound statement (not found)”报错的方法。
示例1:给UserMapper接口添加@Mapper注解
在UserMapper接口上添加@Mapper注解,声明这是一个Mapper类型。
@Mapper
public interface UserMapper extends BaseMapper<User> {
User selectById(Long id);
}
示例2:检查mapper接口和xml文件是否存在
确认UserMapper.xml文件中是否存在selectById标签,并且mapper接口名称和xml文件名称一致。例如:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectById" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
</mapper>
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决mybatis-plus通用mapper调用报错:Invalid bound statement - Python技术站