2016-02-24 154 views
0

我開發一個使用Spring Boot的新應用程序。我用Mybatis來堅持。我使用Java Config盡我所能。Spring Boot + Mybatis @MapperScan和SqlSessionFactory

當應用程序啓動有關創建我的MyBatis映射器界面我得到這個例外

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

我SRING啓動應用程序類設置這樣

@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.datasource。*因此彈簧啓動與自動配置數據源

現在,我想知道如果我假設太多的春季啓動魔術。我認爲春季啓動會配置sqlSessionFactory,因爲mybatis是在類路徑中。

我看到的很多例子顯示在Java配置中將sqlSessionFactory配置爲@Bean。這是它應該做的方式是應該春天開機會做一些魔術和自動配置嗎?

回答

0

我發現我的問題。我缺少的MyBatis彈簧引導起動

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。*