springboot配置mapper扫描采坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot配置mapper扫描采坑相关的知识,希望对你有一定的参考价值。

参考技术A 启动项目报错

目录结构

这句话的意思是找不到这个mapper.xml对应的java类
解决办法在启动类上加上

必须指定到dao这一级目录,连同java类一同扫描进入,否则不会生效
到此,启动没问题,但是访问时报错

怀疑是mapper文件没有指定,在application.properties中加入

还不行,推测是不是.xml没扫描进入,看下target文件夹果然没有
在pom build中加入

至此访问成功

springboot中@Mapper和@Repository的区别

@Mapper和@Repository是常用的两个注解,两者都是用在dao上,两者功能差不多,容易混淆,有必要清楚其细微区别;

区别:

@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中:如下,在启动类中配置扫描地址:

@SpringBootApplication   //添加启动类注解
@MapperScan("com.xz.springboot.mapper")  //配置mapper扫描地址
public class application
{
    public static   void main(String[] args)
    {
        SpringApplication.run(application.class,args);
    }
}

@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

也就是@Repository多了一个配置扫描地址的步骤;

补充:

如果在接口上@Mapper,然后再在 xml中的namespace指向mapper,那么spring就能动态生成一个Mapper的bean,然后你在serviceImpl中的

@Autowired

pravate XXXMapper xxmapper;

就会被这个bean注进去。

 

如果在DaoImpl中加了@Repository,那么在spring的扫包机制下,也会生成这个dao的bean,注入你serviceImpl中的

@Autowired

private xxxDao   xxxdao;

中去。这个机制就像@controller,@Service什么的一样的。

最后,一般不用@Repository,在spring boot中通常用@Mapper

以上是关于springboot配置mapper扫描采坑的主要内容,如果未能解决你的问题,请参考以下文章

关于Springboot整合mybatis启动的问题

springboot扫描不到mapper,解决方法

解决SpringBoot整合Mybatis扫描不到dao层xml文件的问题

SpringBoot 自动配置

Shiro-SpringBoot

SpringBoot加载mapper.xml的两种方法