Invalid bound statment 终极解决大招

相信大伙用mybatis或plus的时候不会没有见过Invalid bound statment(not found)这个报错吧,意思就是mybatis没有找到xml中的方法,本人也是被这个问题困扰了三天之久,各种可能的情况都一一排查就是没有问题,包括下面几种情形:

1、mapper xml文件的扫描

如果使用xml配置sql,需要告诉SpringBoot扫描这些xml,常用以下两种配置方法

方法一:配置文件指定扫描路径(推荐),application.yml里进行配置

mybatis:
mapper-locations: classpath:mapping/*.xml #注意:一定要对应mapper映射xml文件的所在路径
type-aliases-package: com.winter.model # 注意:对应实体类的路径

2、mapper接口的扫描

mapper接口是真正的java接口,使用动态代理,虽然只是接口定义,却实现了真正的sql执行、响应结果映射封装等,需要告诉SpringBoot扫描这些mapper接口,常用以下两种配置方法

方法一:接口上添加注解(推荐)

@Mapper
public interface PermissionMapper {
  ... 略 ...
}

方法二:指定扫描包路径,该配置在Application启动类的上面

@MapperScan("com.XXX.XXX.services.mapper")

 

3、检查xml文件,id=方法名 的sql是否存在,该xml对应的mapper接口是否存在

我的情形

很遗憾,都没有以上这三种情况,好吧你这么拽劳资不用你个xml了总行吧,最后干脆使用了@Select注解,以前的那个mapper.xml文件还放在那里,有时间了再研究研究。在使用此注解时需要注意以下几种情况:

1、须要将字段别名设置为跟实体类的属性一样,否则不能映射值,导致查出来的对象都为null,字段别名设置可以减少一个@Results的注解

2、入参Map须由参数BO类转化为map进行传入。

注意:BO类为带pageNumber,pageSize 字段的实体类,也可以继承一个自定义的PageConditon来使用,这个PageCondition类是只有分页的相关参数)

如此,问题得以完美解决,当然也支持分页。

先把代码码出来,这些诡异的问题放到有时间了再去研究,再行积累。下面是code:

Invalid bound statment 终极解决大招_第1张图片

 

感觉对自己有帮助的朋友不妨点个赞关注转发一波,小僧将不胜感激。

你可能感兴趣的:(Mybatis)