今天繼續搭建咱們的kono Spring Boot腳手架,上一文集成了一些基礎的功能,好比統一返回體、統一異常處理、快速類型轉換、參數校驗等經常使用必備功能,並編寫了一些單元測試進行驗證,今天把國內最流行的ORM框架Mybatis也集成進去。使用的Spring Boot版本爲2.3.2.RELEASE。java
Gitee: https://gitee.com/felord/kono 1.0.0.MYBATIS 分支GitHub: https://github.com/NotFound40... 1.0.0.MYBATIS 分支mysql
集成Mybatis的步驟並非特別複雜,我將它們分爲三個步驟,接下來進入正題。git
首先我將Mybatis的Starter加入kono-dependencies進行依賴管理,並在kono-app引入:github
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency>
經過IDEA的Maven插件能夠看出咱們引入了Mybatis的Starter以後,高性能的數據源鏈接池就被集成了進來。可是數據庫驅動須要咱們自行引入,這裏咱們直接引用MySQL的依賴:spring
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
配置是最重要的部分,咱們來分層次講解配置。sql
數據源在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
進行配置,這裏先採用默認,後續若是有須要再進行修改。mybatis
com.mysql.jdbc.Driver
已經標記爲過期,如今請使用com.mysql.cj.jdbc.Driver
。
mybatis的基本配置也不是特別多,你只須要讓Mybatis知道從哪裏加載你定義的Mapper
接口,從哪裏加載對應的*Mapper.xml
文件,而後配置一些mybatis的特性,複雜的騷操做能夠從我以往mybatis相關的文章去看一下。app
我新建了一張表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
到這裏基本的mybatis整合就完成了,你能夠從項目倉庫拉下來,本身配置一個數據庫跑一下。多多關注:碼農小胖哥 繼續來和我一塊兒整合腳手架。
關注公衆號:Felordcn 獲取更多資訊