springboot整合mybatis

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

你可能感兴趣的:(springboot整合mybatis)