
1. 前言
今天繼續搭建我們的kono Spring Boot腳手架,上一文集成了一些基礎的功能,比如統一回傳體、統一例外處理、快速型別轉換、引數校驗等常用必備功能,并撰寫了一些單元測驗進行驗證,今天把國內最流行的ORM框架Mybatis也集成進去,使用的Spring Boot版本為2.3.2.RELEASE,
Gitee: https://gitee.com/felord/kono 1.0.0.MYBATIS 分支
GitHub: https://github.com/NotFound403/kono 1.0.0.MYBATIS 分支
2. 集成Mybatis的步驟
集成Mybatis的步驟并不是特別復雜,我將它們分為三個步驟,接下來進入正題,
3. 依賴集成
首先我將Mybatis的Starter加入kono-dependencies進行依賴管理,并在kono-app引入:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

通過IDEA的Maven插件可以看出我們引入了Mybatis的Starter之后,高性能的資料源連接池就被集成了進來,但是資料庫驅動需要我們自行引入,這里我們直接參考MySQL的依賴:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
4. 配置
配置是最重要的部分,我們來分層次講解配置,
4.1 先配置資料源
資料源在application.yml中的配置前綴為spring.datasource,那么基本的配置如下:
spring:
datasource:
# 連接池實作的限定名,這里使用hikari連接池,一般不用配置這個,會自動去類路徑下加載,這是一個可選的配置,
# type: com.zaxxer.hikari.HikariDataSource
# 資料庫的驅動JDBC驅動程式的類全限定名,它其實會根據下面的url配置自動檢測,這是一個可選配置,
# driver-class-name: com.mysql.cj.jdbc.Driver
# 資料庫的JDBC鏈接
url: jdbc:mysql://ip:port/database
# 資料庫用戶名
username:
# 資料庫密碼
password:
hikari連接池的配置可以根據需要自行通過spring.datasource.hikari進行配置,這里先采用默認,后續如果有需要再進行修改,
com.mysql.jdbc.Driver已經標記為過時,現在請使用com.mysql.cj.jdbc.Driver,
4.2 mybatis配置
mybatis的基本配置也不是特別多,你只需要讓Mybatis知道從哪里加載你定義的Mapper介面,從哪里加載對應的*Mapper.xml檔案,然后配置一些mybatis的特性,復雜的騷操作可以從我以往mybatis相關的文章去看一下,
我新建了一張表user_info,并創建了對應的物體類UserInfo,接著就是定義Mapper介面的位置,假如說我把所有的Mapper介面放在cn.felord.kono.mapper包下,那么就應該使用@MapperScan來標識這個路徑,引導mybatis找到這些Mapper介面,
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
/**
* mybatis configuration.
*
* @author felord.cn
*/
@MapperScan("cn.felord.kono.mapper")
@Configuration
public class MybatisConfiguration {
}
接著我們撰寫UserInfo對應的UserInfoMapper介面,并增加一個新增方法,這里可以根據IDE去插件市場下載一些mybatis插件來方便我們開發,關鍵字搜索mybatis即可,這里我隨便找了一個插件安裝,通過IDEA的ALT+ENTER快捷鍵調出了一個生成UserInfoMapper對應XML的選單,我們可以使用它來生成XML檔案以及對應方法的陳述句,


XML檔案的位置我們放在resources下的mapper檔案夾中,編譯后就是類路徑下的mapper檔案夾中,所以需要在application.yml進行如下配置,
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
對應的UserInfoMapper.xml檔案:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.felord.kono.mapper.UserInfoMapper">
<insert id="save" parameterType="cn.felord.kono.entity.UserInfo">
insert into user_info (name, age)
VALUES (#{name}, #{age})
</insert>
</mapper>
然后測驗一下新增成功了沒有問題,但是查詢的單元測驗卻沒有通過:
@Test
void testUserInfoMapperFindById(){
UserInfo userInfo = userInfoMapper.findById(3);
System.out.println("userInfo = " + userInfo);
Assertions.assertEquals(3,userInfo.getUserId());
}
這是因為駝峰轉下劃線的問題造成了,user_id無法注入到userId中,所以要宣告以下配置來支持下劃線轉駝峰就可以了:
mybatis:
configuration:
map-underscore-to-camel-case: true
如何列印SQL陳述句呢?只需要宣告Mapper介面包的日志級別為DEBUG就可以了,
logging:
level:
cn.felord.kono.mapper: debug
5. 總結
到這里基本的mybatis整合就完成了,你可以從專案倉庫拉下來,自己配置一個資料庫跑一下,多多關注:碼農小胖哥 繼續來和我一起整合腳手架,
關注公眾號:Felordcn 獲取更多資訊
個人博客:https://felord.cn
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100239.html
標籤:Java
上一篇:BCB 怎樣上傳檔案到服務器
