从mybatis3.4.0开始加入了@Mapper注解,它可以在编译之后自动生成相应的接口实现类,不用再写如下图所示的mapper映射文件。
用@Mapper直接在接口中写 ,编译时自动生成实现类,具体写法见下图。
如果需要让多个接口都变成实现类,用@Mapper一个个添加太麻烦,这时我们在Springboot启动类添加@MapperScan,指定要扫描的mapper的包的路径,然后包下面的所有接口在编译之后都会生成相应的实现类,实现批量添加@Mapper注解。
根据百度结果,@Mapper = @MapperScan(自动扫描配置)+Repository,单独有Mapper的时候,Autowired会报错,但可以运行。
简而言之,批量用@MapperScan,单个@Mapper。
注:
@MapperScan用来扫描定义包下的所有的接口,给接口都生成一个bean(经测试,即便bean已经存在,@MapperScan还是会将这些接口再注册一个bean,导致出错)。
其源码里有个annotationClass,默认值是Annotation.classs。
Class<? extends Annotation> annotationClass() default Annotation.class;
注解如下所示加个参数,就能解决上面的问题。
@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)
经验证,一些无关的接口不再注册为一个bean。