MyBatis Spring-Boot Multi-Module 配置BindingException
MyBatis Spring-Boot Multi-Module configuration BindingException
我正在尝试使用 spring-boot 和 mybatis 在我的(未来)微服务应用程序上达到我非常简单的端点 (http://localhost:8100/user/1)映射器,但出现此错误。
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): fr.mydomain.user.service.UserReadService.findById
看到很多人遇到这个错误,我尝试了我看到的每一个“修复”,但没有任何效果...
architecture
UserMapper.java
package fr.mydomain.user.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import fr.mydomain.user.model.User;
@Mapper
public interface UserMapper {
User findById(@Param("id") Long 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="fr.mydomain.user.mapper.UserMapper">
<resultMap type="fr.mydomain.user.model.User" id="usermap">
<id column="id" property="id"/>
</resultMap>
<select id="findById" resultMap="usermap">
SELECT id FROM user
WHERE id = #{id};
</select>
</mapper>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="fr/mydomain/user/mapper/UserMapper.xml"/>
</mappers>
</configuration>
有人能看出我错过了什么吗?
编辑:您可以在我的 github 上找到该项目 here 只需要配置您的数据库
找到我的问题,它在我的 CoreApplication.java
@SpringBootApplication(scanBasePackages = "fr.mydomain.user")
@MapperScan("fr.mydomain.user")
public class CoreApplication {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class, args);
}
}
我以为 MapperScan 注释正在寻找 Mapper 注释,但实际上它正在将每个 class 视为映射器,因此它正在将我的服务视为映射器...
@MapperScan("fr.mydomain.user") => @MapperScan("fr.mydomain.user.mapper")
你可以 post 投影到 github 并共享项目吗?我还构建了 maven multi-module sringboot+mybatis,但不能 运行 谢谢。
我正在尝试使用 spring-boot 和 mybatis 在我的(未来)微服务应用程序上达到我非常简单的端点 (http://localhost:8100/user/1)映射器,但出现此错误。
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): fr.mydomain.user.service.UserReadService.findById
看到很多人遇到这个错误,我尝试了我看到的每一个“修复”,但没有任何效果...
architecture
UserMapper.java
package fr.mydomain.user.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import fr.mydomain.user.model.User;
@Mapper
public interface UserMapper {
User findById(@Param("id") Long 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="fr.mydomain.user.mapper.UserMapper">
<resultMap type="fr.mydomain.user.model.User" id="usermap">
<id column="id" property="id"/>
</resultMap>
<select id="findById" resultMap="usermap">
SELECT id FROM user
WHERE id = #{id};
</select>
</mapper>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="fr/mydomain/user/mapper/UserMapper.xml"/>
</mappers>
</configuration>
有人能看出我错过了什么吗?
编辑:您可以在我的 github 上找到该项目 here 只需要配置您的数据库
找到我的问题,它在我的 CoreApplication.java
@SpringBootApplication(scanBasePackages = "fr.mydomain.user")
@MapperScan("fr.mydomain.user")
public class CoreApplication {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class, args);
}
}
我以为 MapperScan 注释正在寻找 Mapper 注释,但实际上它正在将每个 class 视为映射器,因此它正在将我的服务视为映射器...
@MapperScan("fr.mydomain.user") => @MapperScan("fr.mydomain.user.mapper")
你可以 post 投影到 github 并共享项目吗?我还构建了 maven multi-module sringboot+mybatis,但不能 运行 谢谢。