There are many reasons for mybatis to report an error: Invalid bound statement (not found), but just like the error message, the sql statement in the xml cannot be found. There are three types of errors:
Type 1: Syntax error
Java DAO layer interface
public void delete(@Param("id")String id);
Java corresponding mapper.xml file
<? 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 ="xxx.xxx.xxx.Mapper" > <!-- delete data --> < delete id ="delete" parameterType ="java.lang.String" > DELETE FROM xxx WHERE id=#{id} </ delete > </ mapper >
Check: 1. Whether the method name (delete) in the interface is consistent with the id=”delete” in the xml file
2. Whether the path in namespace=”xxx.xxx.xxx.Mapper” in the xml file is consistent with the path of the interface file
3. Whether parameterType and resultType are accurate; resultMap and resultType are different.
Second: compile error
Navigate to the project path: under the error path in target\classes\, find out whether the corresponding xml file exists.
(1) If there is no corresponding xml file, you need to add the following code to pom.xml:
< build > < resources > < resource > < directory > src/main/java </ directory > < excludes > < exclude > **/*.java </ exclude > </ excludes > </ resource > < resource > < directory > src/main/resources </ directory > < includes > < include >**/*.* </include > </ includes > </ resource > </ resources > </ build >
Delete the files in the classes folder, recompile, and the corresponding xml file appears.
(2) If there is an xml file, open the xml file and check whether the error part is consistent with the source file and inconsistent, then
First clear the files in the classes folder, execute the command: mvn clean to clean up the content, and then recompile.
The third type: configuration error
There was a problem with the configuration path when specifying scan packages in the project configuration file. For example: the specification of the “basePackage” property package name in the spring configuration file must be specific to the package where the interface is located, and do not write the parent or even higher-level package, otherwise problems may occur; cn.dao and cn.* may also cause errors ; Note that when scanning, the package may not be scanned.
Fourth: Referenced dependency package error
The project has always been running normally. When I recompiled the project one day, I found that this error has been reported all the time. I checked it again according to the previous three methods, and the error is still reported. Finally, I suddenly remembered that the company released a message a few days ago, saying that there are several internal dependency packages updated, because I wrote [xxx,) in the pom.xml file, and the latest dependency package will be automatically referenced. Then I modified the pom.xml file, returned the version to the old version, and after recompiling, the problem was solved.