从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。
本文介绍了MyBatis从3.4.0开始引入的@Mapper注解,该注解使得可以直接在接口中定义SQL,编译后自动生成实现类。同时,通过@MapperScan可以在Springboot启动类中批量扫描指定包下的所有接口,生成对应的实现类,避免手动添加@Mapper。当使用@MapperScan时,需要注意避免注册不必要的接口为bean,可以通过指定annotationClass参数来解决此问题。
3330

被折叠的 条评论
为什么被折叠?



