SpringBoot - 第十六章 | MyBatis整合 (XML方式)
在前面的文章中 第十五章 - SpringBoot MyBatis整合 (註解方式) 介紹如何使用MyBatis的透過註解的方式基本訪問資料庫。
這邊來介紹使用Spring Boot整合MyBatis,通過xml的方式來做使用。
使用範例
資料庫範例
這邊用Customer來做範例
1 | DROP TABLE IF EXISTS `customer`; |
相關配置
加入pom的依賴
1
2
3
4
5<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>src/main/resources/application.properties中配置資料源訊息
1
2
3
4
5
6
7
8# 資料源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 指定mybatis去哪裡掃描mapper
mybatis.mapper-locations=classpath:mapper/*.xml
建立實體 (Entity)
此時參數名稱故意跟資料庫欄位名稱不一樣,下方透過xml內的resultMap來做對應。
建立資料訪問對象 (Dao)
建立Mapper.xml
Entity裡面的參數名稱和資料庫欄位名稱不一樣的時候,可以設定對應的方式,就是透過以下方式做對應的;
column表示Entity裡面的參數名稱,property 表示資料庫欄位名稱。
1 | <resultMap id="BaseResultMap" type="com.jj.learning.springboot.chapter16.domain.Customer"> |
單元測試
測試結果
其他
.xml可以放在哪裡呢?
兩個位置可以放,第一個是直接放在UserMapper所在的包下面,但是需要在Application設定
@MapperScan(basePackages = “com.jj.learning.springboot.chapter16.domain”)
設定後CustomerMapper上方的@Mapper就可以移除了。
注:放在這裡的.xml會被自動掃描到,但是有另外一個Maven帶來的問題,就是java目錄下的xml資源在項目打包時會被忽略掉,所以,如果.xml放在包下,需要在pom.xml文件中再添加如下配置,避免打包時java目錄下的XML文件被自動忽略掉
1 | <build> |
第二個地方,.xml也可以直接放在resources目錄下,這樣就不用擔心打包時被忽略了,但是放在resources目錄下,又不能自動被掃描到,需要添加額外配置。例如我在resources目錄下建立mapper目錄用來放mapper文件。
1 | # 指定mybatis去哪裡掃描mapper |
注:如此配置之後,mapper就可以正常使用了。注意第二種方式不需要在pom.xml文件中配置文件過濾。
註:以上參考了
程序猿DD-翟永超 的 Spring Boot整合MyBatis 文章。
江南一点雨 的 最简单的SpringBoot整合MyBatis教程 文章。