【Java】spring+mybatis BindingException: Invalid bound statement
在网上搜了一大圈,代码、路径、配置等都试过了,还是不知道为什么
版本号等信息
IDE: IntelliJ IDEA 2019.1 x64
MySQL: Server version 5.6.42-log MySQL Community Server(GPL)
JDK: java version 1.8.0_201
Mybatis: 3.4.4
spring boot: 2.0.2
Tomcat: 8.5.31
出错截图
出错代码
Controller层
service层(就不贴interface了)
Manager层
mapper
xml文件
dao层目录
目录结构
mybatis配置路径(application.yml)
mybatis配置文件
看网上解决方法,在pom.xml中加了这段
且我在debug的时候,发现mybatis源码中,Configuration类中有一个成员和两个方法,为:
/*文件Configuration.java*/protected final Map<String, MappedStatement> mappedStatements = new StrictMap<MappedStatement>("Mapped Statements collection");
public boolean hasStatement(String statementName) {
return hasStatement(statementName, true);
}
public boolean hasStatement(String statementName, boolean validateIncompleteStatements) {
if (validateIncompleteStatements) {
buildAllStatements();/*这个函数中只有四个if,且都没有执行*/
}
return mappedStatements.containsKey(statementName);/*这里没有在mappedStatements中找到目标statement,于是返回上层函数*/
}
/*我在mappedStatements中找了,确实没有我的目标statement*/
/*文件MapperMethod.java*/private MappedStatement resolveMappedStatement(Class<?> mapperInterface, String methodName,
Class<?> declaringClass, Configuration configuration) {
String statementId = mapperInterface.getName() + "." + methodName;
if (configuration.hasStatement(statementId)) {/*这个if判断这里,应该返回为true进入if中,结果走到了else if中,返回了null,后面就跳转到错误处理相关代码部分了*/
return configuration.getMappedStatement(statementId);
} else if (mapperInterface.equals(declaringClass)) {
return null;
}
for (Class<?> superInterface : mapperInterface.getInterfaces()) {
if (declaringClass.isAssignableFrom(superInterface)) {
MappedStatement ms = resolveMappedStatement(superInterface, methodName,
declaringClass, configuration);
if (ms != null) {
return ms;
}
}
}
return null;
}
希望有大神帮忙解决一下,已经搞了好几天了,一直解决不了
回答
通过测试,解决了问题,但是依然不清楚原因
测试发现
第一步,用IDEA运行,会出现上述错误
第二步,用eclipse运行,没有错误,程序正常运行
第三步,用IDEA运行,不会出现错误,正常运行
错误解决了,可是错误出现的原因还是不清楚,推测出现错误可能的因素有:
1.IDEA自身配置问题
2.由于之前这个项目是在eclipse上创建的,之前的项目成员也都是在eclipse上开发的,可能导致某些地方,例如配置,设置等不兼容
2019.04.22更新
问题已经解决,在于某些xml文件没有正常编译,原因是路径没有配置。
目录(示例xml文件)
增加代码(pom.xml文件)
以上是 【Java】spring+mybatis BindingException: Invalid bound statement 的全部内容, 来源链接: utcz.com/a/91616.html