spring boot扫描mapper文件

一个简单的功能,百度查的都是XX,谷歌万岁.

因为扫描不到自动生成的mapper就无法注入到service

方案一.@Mapper

如果Mapper文件所在的包和你的配置mapper的项目的pom定义的groupid相同的话.

因为我的mapper是一个模块,portal一个模块.

mapper在com.haitian.mapper下

portal的groupid是com.haitian,这样可以直接扫描到.

但是这样有两个需要考虑的地方:

1.mybatis-generator生成的mapper并没有@mapper

配置文件不行,好像插件可以

https://github.com/mybatis/generator/issues/184

还得折腾一会

2.如果第一个折腾出来了,默认会扫描com.haitian下的所有包来找@Mapper

虽然对运行效率不会有什么影响,启动就会变慢啊,浪费时间.

所以不推荐

方案二.

mybatis.mapper-locations=com.haitian.mapper/*.xml

不管用,有人说properties管用,我yml和propertis都试了,都不管用

方法三.加载xml文件

<!-- 配置扫描包,加载mapper代理对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.haitian.mapper"></property>
</bean>

@SpringBootApplication
@ImportResource(locations = "classpath:spring-dao.xml")
public class PortalApplication {

public static void main(String[] args) {
SpringApplication.run(PortalApplication.class, args);
}
}

可行是可行,不符合spring boot的开发理念,不美丽.

方案四:

@MapperScan("com.haitian.mapper")

一行搞定.

 
上一篇:mysql组合索引顺序参考


下一篇:圆桌问题