如果这篇文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,一起学习,共同进步!
今天给同事看了个问题,发现了这个问题,之前也遇见过,可是没有遇见这种情况,这次我记录一下。
首先来说,造成这个错误的原因是什么。它是在Spring Boot应用程序中遇到“Invalid bound statement (not found)”错误,通常意味着你的MyBatis(或MyBatis-Spring-Boot-Starter)找不到某个SQL映射语句。
由远到近,从无到有一点一点分析和排查
1:首先判断是否生成了class文件,去target文件加下面去你相应的文件夹下面查看,是否有生成的mapper.xml 如果没有,重新编译一下,选择Build-->Rebuild Project 进行重新编译
2: 如果第二种情况如果target 文件夹下面有数据,那么就去看mapper.xml 文件当中的 namespace 是否是你mapperDao 接口的相对路径,点击一下能否进去, 顺带着看看你的sql id 是不是跟方法名对应上了
但是这种情况,大部分人应该是不会犯错误的,因为现在多为自动生成的。
例如:UserMapper.java:
package com.example.mapper; import com.example.model.User; public interface UserMapper { User findById(int id); }
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <select id="findById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> </mapper>
3:如果mapper.xml文件也没有问题,可以排查 xxxxApplication这个启动类里面的注解了
看看你的mapperScan 是否能扫描到你的接口的包 。例如我的MyApplication 里面的mapperScan就是扫描到了mapper(Dao)下面
@MapperScan(value = {"com.example.mapper"}) 如果路径错误了请及时更正
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.example.mapper") public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
4: 以上都没有问题可以排查配置文件,查看配置文件 当中配置的xml文件的路径是否正确
applicaition.properties 当中是否写对了,例如:mybatis.mapper-locations=classpath*:mapper/*.xml
application.yml当中这样写
mybatis: mapper-locations: classpath*:mapper/*.xml
在这里需要注意的是,例如我同事之前写的是这种的
mybatis: mapper-locations: classpath*:mapper/db1/mysql/*.xml
xml存放在resources 下是以这种形式展现的,那么这种是错误的。
因为它在文件夹下面是这么展示的:
我同事就是因为这种情况出现了错误。我排查到最后才发现。这块得使用文件夹父子目录的形式去呈现。而不是包名写成这样。
至此大概率可以解决99%的关于这个的问题。如果还剩1%。当你确实都检查过了,还是不行,你可以选择两件事,第一关闭idea 然后重启.如果第一步不行,第二步:关闭电脑重启电脑。
目前为止:我就关过一次电脑。希望大家没到关电脑的这一步。
标签:xml,elitel,mapper,xxx,mybatis,import,错误处理,com From: https://www.cnblogs.com/sunrising/p/18246243