Spring Boot + Mybatis @MapperScan和SqlSessionFactory

时间:2016-02-24 18:28:54

标签: spring-boot spring-mybatis

我正在使用Spring Boot开发一个新的应用程序。我使用Mybatis来保持持久性。我尽我所能使用Java Config。

当应用开始创建我的Mybatis映射器界面时,我收到此异常

exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

My Sring Boot应用程序类设置如下

@SpringBootApplication
@MapperScan("com.mydomain.admin.service.dao")
public class AdminApplication {

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

Mybatis映射器接口类设置如下

package com.mydomain.admin.service.dao;
public interface AdminClientDAO {
@Select("SELECT clientId, name, enabledFlag as enabled, dateAdded, dateUpdated as updateDate FROM client")
public List<Client> findAll();

}

我的数据源配置了spring boot。我已经命名了这些属性 spring.datasource。* so spring boot with auto-configure the data source

现在,我想知道我是否假设过多的春季启动魔法。我假设spring boot会配置sqlSessionFactory,因为mybatis在classpath中..

我看到的许多示例都显示了在Java Config中将sqlSessionFactory配置为@Bean。这是应该完成的方式,应该是spring boot是否应该做一些魔术并自动配置它?

2 个答案:

答案 0 :(得分:1)

我有

@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);
    return sessionFactory.getObject();
}

在名为Application.java的类中扩展

org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter

我的Application.java在扩展

的类中初始化
org.springframework.boot.context.web.SpringBootServletInitializer

数据源在我的Spring-Boot应用程序中运行良好。 希望这有助于有人在spring.datasource中使用数据源搜索Spring Boot,Mybatis和SQLSessionFactory。*

答案 1 :(得分:0)

我发现了我的问题。我错过了mybatis-spring-boot-starter