spring boot集成mybatis的Invalid bound statement (not found)问题【史上最全】

本人正在学习【Spring Boot】框架,无奈在集成Mybatis时踩到巨坑,不断抛出Invalid bound statement (not found)异常,查阅大量资料并且付诸实践后,得出如下结论:

1、 检查Mapper.xml文件中的namespace指定的路径是否正确
具体如下:

在这里插入图片描述
手动敲上去容易出错,建议直接对准mapper文件右键,选中copy reference再粘贴即可

2、检查application.properties(application.yml)文件中是否配置了mybatis的mapper-locations和type-aliases-package属性

在这里插入图片描述

3、是否有创建配置类,并且添加@MapperScan扫描所有Mapper接口(或者在每一个Mapper接口上添加@Mapper注解,两种方法可以相互替代)
1、配置类写法:
package smq666.learnspringboot.config;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
import smq666.learnspringboot.dao.BookMapper;

@Configuration
@MapperScan(basePackages = {"smq666.learnspringboot.dao"})
public class MapperConfig {
}

指定包路径时,使用的是字符串,可能出错,可用鼠标右键copy reference方法,也可以使用指定类的方法,指定了基础类后,会扫描被指定的基础类所在的包,代码如下
package smq666.learnspringboot.config;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
import smq666.learnspringboot.dao.AdminMapper;
import smq666.learnspringboot.dao.BookMapper;

@Configuration
/*也可以在需要扫描的包下创建一个空接口,例如一个叫
  MapperTool的空接口,然后将下方代码中的AdminMapper.class
  替换为MapperTool.class即可,当然最后结果都一样
*/
@MapperScan(basePackageClasses = {AdminMapper.class})
public class MapperConfig {
}

2、每个Mapper接口添加@Mapper注解
package smq666.learnspringboot.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import smq666.learnspringboot.model.Admin;


@Mapper
public interface AdminMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table admin
     *
     * @mbggenerated
     */
    int deleteByPrimaryKey(Long id);
}
如上,在每一个Mapper接口上都添加@Mapper注解即可
4、还有一种本人很少用的注解@Repository,和@Mapper功能类似。如果使用的是@Repository注解(在每个Mapper接口上添加了@Repository而不是@Mapper),则必须使用配置类加@MapperScan的方法与其组合
配置类与上面的配置类一样,但是Mapper接口上方的注解变为@Repository
package smq666.learnspringboot.dao;

import java.util.List;

import org.springframework.stereotype.Repository;
import smq666.learnspringboot.model.Admin;


@Repository
public interface AdminMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table admin
     *
     * @mbggenerated
     */
    int deleteByPrimaryKey(Long id);
}    
5、resources目录下的文件夹名不能含有 “."(与eclipse不同)。 例如:
resources/mapper/AdminMapper.xml···········正确
resources/smq666.mapper/AdminMapper.xml····错误

在这里插入图片描述

6、resources目录不能写成resource目录,图片如上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值