MyBatis Spring-Boot多模块配置BindingException

Seb:

我试图使用spring-boot和mybatis作为映射器,在(未来的)微服务应用程序上达到非常简单的终结点(http:// localhost:8100 / user / 1),但出现此错误。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): fr.mydomain.user.service.UserReadService.findById

看到很多人遇到此错误,我尝试了所看到的每个“修复”,但没有任何效果。

建筑

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上找到项目,这里只需要配置您的数据库

Seb:

发现我的问题,那是在我的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批注,但实际上它正在将每个类都视为Mapper,因此它正在考虑将我的服务作为Mapper ...

@MapperScan("fr.mydomain.user") => @MapperScan("fr.mydomain.user.mapper")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章