在Spring Boot的應(yīng)用開發(fā)中,MyBatis是一個非常流行的持久層框架,它支持定制化SQL谦秧、存儲過程以及高級映射。在本篇文章中撵溃,我們將學(xué)習(xí)如何在Spring Boot項(xiàng)目中集成MyBatis疚鲤,以便通過MyBatis進(jìn)行數(shù)據(jù)庫操作。
添加MyBatis依賴
首先缘挑,我們需要在項(xiàng)目中添加MyBatis的依賴集歇。在Spring Boot中,我們通常會使用Gradle或Maven作為構(gòu)建工具來管理項(xiàng)目依賴语淘。這里诲宇,我們將以Gradle為例,展示如何添加MyBatis的依賴惶翻。
打開項(xiàng)目的build.gradle文件姑蓝,我們需要添加MyBatis Spring Boot Starter的依賴項(xiàng)。這個依賴項(xiàng)會幫助我們更容易地將MyBatis集成到Spring Boot應(yīng)用中吕粗。
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.3'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'cn.daimajiangxin'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
targetCompatibility = '17'
}
repositories {
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java:8.0.17'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
}
在上面的build.gradle文件中纺荧,我們添加了以下依賴項(xiàng):
- spring-boot-starter-web:Spring Boot Web Starter,它包含了構(gòu)建Web應(yīng)用所需的基本依賴颅筋。
- mybatis-spring-boot-starter:MyBatis Spring Boot Starter宙暇,它提供了MyBatis和Spring Boot集成的簡化配置。
- mysql-connector-java:MySQL數(shù)據(jù)庫驅(qū)動垃沦,用于連接MySQL數(shù)據(jù)庫客给。
配置數(shù)據(jù)源和MyBatis
配置好依賴后,你可以通過Gradle的命令行工具來同步項(xiàng)目依賴肢簿,或者在IDE中自動同步靶剑。一旦依賴同步完成蜻拨,你就可以開始編寫Mapper接口和XML映射文件,并使用MyBatis來操作數(shù)據(jù)庫了桩引。
請確保你的application.properties或application.yml文件中已經(jīng)配置了正確的數(shù)據(jù)庫連接信息缎讼,例如:
# datasource 配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/你的數(shù)據(jù)庫名?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
spring.datasource.username=你的數(shù)據(jù)庫用戶名
spring.datasource.password=你的數(shù)據(jù)庫密碼
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.daimajiangxin.springboot.learning.model
創(chuàng)建實(shí)體
參考上一篇文章,從零開始學(xué)Spring Boot系列-集成MySQL中創(chuàng)建的User類坑匠。
創(chuàng)建Mapper接口和XML文件
在項(xiàng)目的src/main/java目錄下血崭,創(chuàng)建mapper 的一個package ,再創(chuàng)建Mapper接口厘灼。例如夹纫,創(chuàng)建一個UserMapper.java接口:
package cn.daimajiangxin.springboot.learning.mapper;
import cn.daimajiangxin.springboot.learning.model.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> findAllUsers();
}
同時,在src/main/resources/mapper/目錄下創(chuàng)建對應(yīng)的XML映射文件设凹,如UserMapper.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.daimajiangxin.springboot.learning.mapper.UserMapper">
<resultMap id="BaseResultMap" type="cn.daimajiangxin.springboot.learning.model.User">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="email" column="email" jdbcType="VARCHAR"/>
<result property="age" column="age" jdbcType="INTEGER"/>
<result property="remark" column="remark" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,name,email,
age,remark
</sql>
<select id="findAllUsers" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from user
</select>
</mapper>
使用Mapper
在你的Service類中舰讹,可以通過注入Mapper接口來使用MyBatis的功能。例如闪朱,在UserService.java中:
package cn.daimajiangxin.springboot.learning.service;
import cn.daimajiangxin.springboot.learning.mapper.UserMapper;
import cn.daimajiangxin.springboot.learning.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserMapper userMapper;
@Autowired
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> getAllUsers() {
return userMapper.findAllUsers();
}
// 添加其他業(yè)務(wù)邏輯方法...
}
創(chuàng)建Controller
參考上一篇文章月匣,從零開始學(xué)Spring Boot系列-集成MySQL中創(chuàng)建的UserController 類。
測試集成效果
運(yùn)行你的Spring Boot應(yīng)用程序奋姿,并通過調(diào)用UserService的findAllUsers方法來測試MyBatis的集成效果锄开。你可以通過編寫單元測試或使用Postman或apipost等工具來發(fā)送HTTP請求,訪問來http://localhost:8080/users查看所有用戶的列表称诗。
總結(jié)
通過以上步驟萍悴,我們成功地在Spring Boot項(xiàng)目中集成了MyBatis,并通過編寫Mapper接口和XML映射文件粪狼,實(shí)現(xiàn)了數(shù)據(jù)庫的操作退腥。這只是集成MyBatis的基礎(chǔ)示例,你可以進(jìn)一步探索MyBatis的高級特性再榄,如動態(tài)SQL狡刘、結(jié)果映射等,以滿足更復(fù)雜的業(yè)務(wù)需求困鸥。同時嗅蔬,結(jié)合Spring Boot的其他功能,你可以構(gòu)建出功能強(qiáng)大且易于維護(hù)的應(yīng)用程序疾就。
源文來自:https://daimajiangxin.cn
源碼地址:https://gitee.com/daimajiangxin/springboot-learning