最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 集成 MyBatis 全攻略(最新整理)

 更新時(shí)間:2025年08月18日 10:14:37   作者:柯南二號(hào)  
本文詳解SpringBoot集成MyBatis的流程,涵蓋依賴配置、數(shù)據(jù)源設(shè)置、實(shí)體類與Mapper編寫(注解/XML)、Service/Controller開發(fā)及分頁(yè)、緩存、動(dòng)態(tài)SQL等優(yōu)化,助力建設(shè)高效全棧應(yīng)用,感興趣的朋友跟隨小編一起看看吧

Spring Boot 集成 MyBatis 全攻略

1. 為什么選擇 MyBatis

  • ORM 靈活性:相比 Hibernate,MyBatis 更靈活,SQL 可控,性能優(yōu)化空間大。
  • 學(xué)習(xí)曲線低:對(duì)于熟悉 SQL 的開發(fā)者,上手快。
  • 與 Spring Boot 無(wú)縫整合:只需少量配置,即可快速使用。

2. 基礎(chǔ)環(huán)境

依賴(pom.xml)

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- MyBatis-Spring-Boot-Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>3.0.3</version>
    </dependency>
    <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- Lombok(可選) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

3. 配置數(shù)據(jù)源

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root123
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  # 指定 Mapper XML 文件位置
  mapper-locations: classpath:mapper/*.xml
  # 指定實(shí)體類包,自動(dòng)映射列名和屬性名(開啟駝峰命名)
  type-aliases-package: com.example.demo.entity
  configuration:
    map-underscore-to-camel-case: true

4. 定義實(shí)體類

package com.example.demo.entity;
import lombok.Data;
@Data
public class User {
    private Long id;
    private String username;
    private String email;
}

5. 定義 Mapper 接口

package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);
    @Select("SELECT * FROM user")
    List<User> findAll();
    @Insert("INSERT INTO user(username, email) VALUES(#{username}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insert(User user);
    @Update("UPDATE user SET username=#{username}, email=#{email} WHERE id=#{id}")
    int update(User user);
    @Delete("DELETE FROM user WHERE id=#{id}")
    int delete(Long id);
}

? 這里用注解方式,簡(jiǎn)單清晰;復(fù)雜 SQL 可以寫到 XML 文件。

6. 使用 XML 配置 SQL(適合復(fù)雜 SQL)

resources/mapper/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="com.example.demo.mapper.UserMapper">
    <select id="findAll" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>
    <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user(username, email) VALUES(#{username}, #{email})
    </insert>
</mapper>

7. Service + Controller

Service

package com.example.demo.service;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    private final UserMapper userMapper;
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
    public User getUser(Long id) {
        return userMapper.findById(id);
    }
    public List<User> listUsers() {
        return userMapper.findAll();
    }
    public int addUser(User user) {
        return userMapper.insert(user);
    }
}

Controller

package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;
    public UserController(UserService userService) {
        this.userService = userService;
    }
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }
    @GetMapping
    public List<User> listUsers() {
        return userService.listUsers();
    }
    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.addUser(user);
        return "User added successfully!";
    }
}

8. 分頁(yè)支持

推薦集成 PageHelper 插件:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.7</version>
</dependency>

使用:

PageHelper.startPage(1, 10);
List<User> users = userMapper.findAll();
PageInfo<User> pageInfo = new PageInfo<>(users);

9. 常見優(yōu)化

  1. 批量插入:使用 foreach 標(biāo)簽。
  2. 動(dòng)態(tài) SQL:使用 <if> <choose> 等標(biāo)簽構(gòu)建靈活查詢。
  3. 二級(jí)緩存<cache/> 配置 + Redis 集成。
  4. 多數(shù)據(jù)源:Spring Boot + MyBatis 支持動(dòng)態(tài)數(shù)據(jù)源切換。
  5. 統(tǒng)一異常處理:結(jié)合 @ControllerAdvice 統(tǒng)一返回接口錯(cuò)誤信息。

10. 總結(jié)

Spring Boot + MyBatis 集成流程大致分為:

  1. 加依賴 → 2. 配數(shù)據(jù)源 → 3. 寫實(shí)體類 → 4. 寫 Mapper(注解/XML) → 5. 寫 Service/Controller → 6. 增強(qiáng)功能(分頁(yè)、緩存、動(dòng)態(tài) SQL)。

這樣,就能快速搭建一個(gè) 基于 Spring Boot + MyBatis 的全棧開發(fā)框架 ??。

到此這篇關(guān)于Spring Boot 集成 MyBatis 全攻略(最新整理)的文章就介紹到這了,更多相關(guān)Spring Boot 集成 MyBatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java開發(fā)中解決Js的跨域問題過程解析

    Java開發(fā)中解決Js的跨域問題過程解析

    這篇文章主要介紹了Java開發(fā)中解決Js的跨域問題過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java靜態(tài)代理和動(dòng)態(tài)代理總結(jié)

    Java靜態(tài)代理和動(dòng)態(tài)代理總結(jié)

    這篇文章主要介紹了Java靜態(tài)代理和動(dòng)態(tài)代理總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • SparkSQl簡(jiǎn)介及運(yùn)行原理

    SparkSQl簡(jiǎn)介及運(yùn)行原理

    Spark SQL就是將SQL轉(zhuǎn)換成一個(gè)任務(wù),提交到集群上運(yùn)行,類似于Hive的執(zhí)行方式。今天通過本文給大家分享SparkSQl簡(jiǎn)介及運(yùn)行原理,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • apache zookeeper使用方法實(shí)例詳解

    apache zookeeper使用方法實(shí)例詳解

    這篇文章主要介紹了Apache Zookeeper使用方法的有關(guān)實(shí)例及詳解,包含了其簡(jiǎn)介和程序設(shè)計(jì)的一些思想,內(nèi)容豐富,需要的朋友可以參考下。
    2017-09-09
  • 通過Maven進(jìn)行jedis連接redis的實(shí)現(xiàn)

    通過Maven進(jìn)行jedis連接redis的實(shí)現(xiàn)

    這篇文章主要介紹了通過Maven進(jìn)行jedis連接redis的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-07-07
  • Java源碼解析之TypeVariable詳解

    Java源碼解析之TypeVariable詳解

    這篇文章主要介紹了Java源碼解析之TypeVariable詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot后端上傳文件類型檢測(cè)方式

    SpringBoot后端上傳文件類型檢測(cè)方式

    這篇文章主要介紹了SpringBoot后端上傳文件類型檢測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例

    springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例

    這篇文章主要介紹了springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例,從源碼角度分析下多級(jí)緩存實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java解決通信過程的中文亂碼的問題

    Java解決通信過程的中文亂碼的問題

    這篇文章主要介紹了 Java解決通信過程的中文亂碼的問題的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • java集合框架 arrayblockingqueue應(yīng)用分析

    java集合框架 arrayblockingqueue應(yīng)用分析

    ArrayBlockingQueue是一個(gè)由數(shù)組支持的有界阻塞隊(duì)列。此隊(duì)列按 FIFO(先進(jìn)先出)原則對(duì)元素進(jìn)行排序。隊(duì)列的頭部 是在隊(duì)列中存在時(shí)間最長(zhǎng)的元素
    2012-11-11

最新評(píng)論

平利县| 杭锦旗| 会泽县| 玉环县| 绍兴市| 庆阳市| 甘泉县| 巴彦县| 四川省| 淮北市| 高淳县| 乾安县| 清河县| 通化县| 巴楚县| 大理市| 井研县| 新郑市| 黄陵县| 克东县| 中牟县| 余干县| 清苑县| 东莞市| 东兴市| 五莲县| 双峰县| 商水县| 津南区| 永顺县| 乐陵市| 孝昌县| 光泽县| 梅州市| 成都市| 临洮县| 喀喇沁旗| 松滋市| 合肥市| 瓦房店市| 利川市|