Spring Boot的MyBatis設定。
先參考使用SpringBoot打造記帳簿專案(十七)使用Eclipse MyBatis Generator plugin自動產生存取資料表的檔案。
在前一篇中已經加入了MyBatis-Spring-Boot-Starter的依賴並生成Mapper及Entity檔如下。
MyBatis需要指定資料庫來原(dataSource),而Spring Boot的dataSource設定在applicatoin.properties
檔。加入以下spring.datasource
開頭的各項設定:
#datasource
spring.datasource.url=jdbc:mysql://localhost:3306/moneynote
spring.datasource.username=matt
spring.datasource.password=12345
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
並在applicatoin.properties
加入mybatis.mapper-locations
來指定mapper(xml)檔的位置,值為Ant-style pattern格式(參考SqlSessionFactoryBean - Properties)。
#mybatis
mybatis.mapper-locations=classpath*:idv/matt/mapper/**/*Mapper.xml
如果沒有設定mapper xml的位置,會出現org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
錯誤。
其他mybatis的設定請參考mybatis-spring-boot-autoconfigure - Configuration及mybatis - Configuration - settings。
如果在Spring MVC時代你有用過MyBatis,必須在配置檔設定org.mybatis.spring.SqlSessionFactoryBean
及org.mybatis.spring.SqlSessionTemplate
,但MyBatis-Spring-Boot-Starter幫我們自動進行了這些配置,所以不用另外設定。
此外MyBatis-Spring-Boot-Starter還會自動掃描有@Mapper
註釋的mapper interface並註冊為bean(如果是用Java config的mapper),但本範例是以xml設定的mapper,所以除了設定上面的mybatis.mapper-locations
,還需要在Spring Boot Application(此專案為MoneynoteApplication
)中設定@MapperScan
。請參考mybatis-spring - Injecting Mappers。
MoneynoteApplication.java
package idv.matt.application;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = { "idv.matt.controller, idv.matt.aop" })
@MapperScan(basePackages = "idv.matt.dao") // <-- 這裡
public class MoneynoteApplication {
public static void main(String[] args) {
SpringApplication.run(MoneynoteApplication.class, args);
}
}
將@MapperScan
的屬性basePackages
值設為Dao interface的package位置idv.matt.dao
,如此Spring Boot便會將指定package位置下的mapper interface註冊為bean。
到此就完成基本的設定了,此時可以正常起動專案並透過程式對資料庫進行存取。
接著請參考使用SpringBoot打造記帳簿專案(二十)MyBatis測試。
回覆刪除mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-jdbc
回覆刪除org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1