從零開始學(xué)Spring Boot系列-集成mybatis

在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查看所有用戶的列表称诗。

20240310022735

總結(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澜术,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猬腰,更是在濱河造成了極大的恐慌鸟废,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姑荷,死亡現(xiàn)場離奇詭異盒延,居然都是意外死亡缩擂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門添寺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胯盯,“玉大人,你說我怎么就攤上這事计露〔┠裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵票罐,是天一觀的道長叉趣。 經(jīng)常有香客問我,道長胶坠,這世上最難降的妖魔是什么君账? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮沈善,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘椭蹄。我一直安慰自己闻牡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布绳矩。 她就那樣靜靜地躺著罩润,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翼馆。 梳的紋絲不亂的頭發(fā)上割以,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音应媚,去河邊找鬼严沥。 笑死,一個胖子當(dāng)著我的面吹牛中姜,可吹牛的內(nèi)容都是我干的消玄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丢胚,長吁一口氣:“原來是場噩夢啊……” “哼翩瓜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起携龟,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兔跌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峡蟋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坟桅,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡相满,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桦卒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片立美。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖方灾,靈堂內(nèi)的尸體忽然破棺而出建蹄,到底是詐尸還是另有隱情,我是刑警寧澤裕偿,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布洞慎,位于F島的核電站,受9級特大地震影響嘿棘,放射性物質(zhì)發(fā)生泄漏劲腿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一鸟妙、第九天 我趴在偏房一處隱蔽的房頂上張望焦人。 院中可真熱鬧,春花似錦重父、人聲如沸花椭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矿辽。三九已至,卻和暖如春郭厌,著一層夾襖步出監(jiān)牢的瞬間袋倔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工折柠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宾娜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓液走,卻偏偏與公主長得像碳默,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缘眶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容