springboot整合mybatis
2019-05-22 本文已影响0人
黑猫警长1122
- pom引入mybatis依赖
要引入mybatis-spring-boot-starter,而不是mybatis-spring或其他的包,因为starter将该用到的包都引入了,而mybatis-spring还要引入如log相关的包,相对复杂
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
- 启动类增加扫描入口 @MapperScan
@SpringBootApplication
@EnableFeignClients
@EnableJpaAuditing
@MapperScan("com.test.pay.*")
public class TestPaymentApplication {
public static void main(String[] args) {
SpringApplication.run(QeedooPaymentApplication.class, args);
}
}
- 配置yml
mybatis.type-aliases-package=com.test.pay.model
mybatis.mapper-locations=classpath:/com/test/pay/mapper/*.xml
- 使用mybatis generator生成相应的文件,启动springboot即可
注意:mybatis generator生成文件的时候,如果已经存在某些表的mapper.xml,会追加内容,此时启动springboot会报错,在生成的时候要先删除mapper.xml再生成,如果有自定义查询,拷贝出来,生成后再拷回去 - 可能遇到的问题
- logfactory找不到:引入包只引入了mybatis-spring,换成mybatis-spring-boot-starter
- Autowired多个实现bean:如果启动的时候报接口有多个实现,应该是mapperscan扫描包,自动创建了,这个问题一般是因为包下面有自己的实现类。可以将mapper放到独立的包,只扫描独立的包
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
除了配置的问题,可能是xml文件根本没有编译。如果xml是放在package下,而不是在resources下,maven是不会编译的,需要修改pom。在build中加入:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>