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

SpringBoot使用MyBatis的XML文件進(jìn)行SQL語句編寫

 更新時間:2025年07月15日 09:08:45   作者:超級小忍  
在現(xiàn)代 Java Web 開發(fā)中,Spring Boot 和 MyBatis 是兩個非常流行的技術(shù)框架,本文將詳細(xì)介紹如何在 Spring Boot 項目中使用 MyBatis 的 XML 文件來編寫 SQL 語句,感興趣的可以了解下

前言

在現(xiàn)代 Java Web 開發(fā)中,Spring BootMyBatis 是兩個非常流行的技術(shù)框架。它們的結(jié)合使得數(shù)據(jù)庫操作變得更加簡潔和高效。本文將詳細(xì)介紹如何在 Spring Boot 項目中使用 MyBatis 的 XML 文件來編寫 SQL 語句,包括配置、代碼結(jié)構(gòu)、SQL 編寫技巧以及最佳實踐等內(nèi)容。

一、什么是 MyBatis

MyBatis 是一個基于 Java 的持久層框架,它允許開發(fā)者通過 XML 或注解方式編寫 SQL,并與 Java 對象進(jìn)行映射(ORM)。相比 Hibernate 等全自動 ORM 框架,MyBatis 更加靈活,適用于需要對 SQL 進(jìn)行精細(xì)控制的場景。

二、Spring Boot + MyBatis 的基本架構(gòu)

典型的 Spring Boot + MyBatis 項目結(jié)構(gòu)如下:

src
└── main
    ├── java
    │   └── com.example.demo
    │       ├── DemoApplication.java
    │       ├── controller
    │       ├── service
    │       ├── mapper
    │       └── model
    └── resources
        ├── application.properties
        └── mapper
            └── UserMapper.xml

其中 mapper 包下的接口與 resources/mapper 下的 XML 文件是一一對應(yīng)的。

三、搭建環(huán)境

1. 添加依賴(Maven)

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- MyBatis Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>3.0.3</version>
    </dependency>

    <!-- MySQL 驅(qū)動 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>

2. 配置數(shù)據(jù)庫連接(application.properties)

spring.datasource.url=jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.mapper-locations=classpath:mapper/**/*.xml
mybatis.type-aliases-package=com.example.demo.model

四、編寫 Mapper 接口和 XML 文件

1. 創(chuàng)建實體類(Model)

package com.example.demo.model;

public class User {
    private Long id;
    private String name;
    private String email;

    // Getter and Setter
}

2. 創(chuàng)建 Mapper 接口

package com.example.demo.mapper;

import com.example.demo.model.User;
import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(Long id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUserById(Long id);
}

3. 創(chuàng)建 XML 映射文件

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="getAllUsers" resultType="User">
        SELECT * FROM users
    </select>

    <!-- 根據(jù)ID查詢用戶 -->
    <select id="getUserById" parameterType="long" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <!-- 插入用戶 -->
    <insert id="insertUser">
        INSERT INTO users (name, email)
        VALUES (#{name}, #{email})
    </insert>

    <!-- 更新用戶 -->
    <update id="updateUser">
        UPDATE users
        SET name = #{name}, email = #{email}
        WHERE id = #{id}
    </update>

    <!-- 刪除用戶 -->
    <delete id="deleteUserById">
        DELETE FROM users WHERE id = #{id}
    </delete>

</mapper>

五、動態(tài) SQL 使用詳解

MyBatis 提供了強(qiáng)大的動態(tài) SQL 功能,常見標(biāo)簽有 <if>、<choose>、<when>、<set>、<where>、<foreach> 等。

示例:根據(jù)條件查詢用戶

Mapper 接口:

List<User> searchUsers(@Param("name") String name, @Param("email") String email);

XML 文件:

<select id="searchUsers" resultType="User">
    SELECT * FROM users
    <where>
        <if test="name != null and name != ''">
            AND name LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="email != null and email != ''">
            AND email LIKE CONCAT('%', #{email}, '%')
        </if>
    </where>
</select>

示例:批量插入用戶

<insert id="batchInsert">
    INSERT INTO users (name, email)
    VALUES
    <foreach collection="list" item="user" separator=",">
        (#{user.name}, #{user.email})
    </foreach>
</insert>

六、測試 MyBatis SQL

可以創(chuàng)建一個簡單的 Service 層調(diào)用 Mapper 并打印結(jié)果。

Service 示例

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public void printAllUsers() {
        List<User> users = userMapper.getAllUsers();
        users.forEach(System.out::println);
    }
}

Controller 示例

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public void getUsers() {
        userService.printAllUsers();
    }
}

七、MyBatis XML 常見標(biāo)簽總結(jié)

標(biāo)簽用途
<select>查詢操作
<insert>插入操作
<update>更新操作
<delete>刪除操作
<where>自動處理 WHERE 子句,避免多余的 AND/OR
<if>條件判斷
<choose>/<when>/<otherwise>多條件選擇
<set>自動處理更新字段中的逗號問題
<foreach>循環(huán)處理集合數(shù)據(jù)(如 IN 子句、批量插入)

八、最佳實踐建議

1.命名規(guī)范統(tǒng)一:XML 文件名與 Mapper 接口名保持一致。

2.SQL 與業(yè)務(wù)邏輯分離:將 SQL 放在 XML 中,便于維護(hù)和審計。

3.使用 <where> 和 <set> 避免語法錯誤

4.合理使用 <resultMap> 映射復(fù)雜對象關(guān)系。

5.開啟 MyBatis 日志輸出,方便調(diào)試:

logging:
  level:
    com.example.demo.mapper: debug

九、擴(kuò)展功能推薦

PageHelper 分頁插件:輕松實現(xiàn)分頁查詢。

MyBatis Generator:自動生成 Model、Mapper 和 XML 文件。

MyBatis Plus:增強(qiáng)型 MyBatis 工具包,簡化 CRUD 操作。

十、結(jié)語

在 Spring Boot 中使用 MyBatis 的 XML 方式編寫 SQL,不僅保留了 SQL 的靈活性,還利用了框架提供的強(qiáng)大映射能力。通過本篇博客,你已經(jīng)掌握了從項目搭建到 SQL 編寫的完整流程,以及動態(tài) SQL 的高級用法。

以上就是SpringBoot使用MyBatis的XML文件進(jìn)行SQL語句編寫的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot MyBatis編寫SQL的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB在Spring Boot中的使用方式舉例介紹

    MongoDB在Spring Boot中的使用方式舉例介紹

    MongoDB是基于Json數(shù)據(jù)結(jié)構(gòu)的非關(guān)系型數(shù)據(jù)庫,每一個Json文檔有一個唯一的主鍵,下面通過實例代碼講解MongoDB在Spring Boot中的使用方式,感興趣的朋友一起看看吧
    2025-05-05
  • 詳解Java中的reactive stream協(xié)議

    詳解Java中的reactive stream協(xié)議

    Stream大家應(yīng)該都很熟悉了,java8中為所有的集合類都引入了Stream的概念。優(yōu)雅的鏈?zhǔn)讲僮?,流式處理邏輯,相信用過的人都會愛不釋手。本文將詳細(xì)介紹Java中的reactive stream協(xié)議。
    2021-06-06
  • 深入分析Java中字符串拼接的三種方式

    深入分析Java中字符串拼接的三種方式

    在Java開發(fā)中,字符串拼接是一個非常常見的操作,本文將通過實際的性能測試,深入分析 + 運(yùn)算符、StringBuilder 和 String.join() 三種字符串拼接方式的性能差異,幫助開發(fā)者在不同場景下做出正確的選擇
    2026-05-05
  • 在SpringBoot項目中動態(tài)切換數(shù)據(jù)源和數(shù)據(jù)庫的詳細(xì)步驟

    在SpringBoot項目中動態(tài)切換數(shù)據(jù)源和數(shù)據(jù)庫的詳細(xì)步驟

    在許多企業(yè)級應(yīng)用中,可能需要根據(jù)不同的業(yè)務(wù)需求來切換不同的數(shù)據(jù)庫,如讀寫分離、分庫分表等場景,Spring Boot 提供了靈活的數(shù)據(jù)源配置方式,本文將介紹如何在 Spring Boot 項目中實現(xiàn)動態(tài)切換數(shù)據(jù)源和數(shù)據(jù)庫的方案,需要的朋友可以參考下
    2025-08-08
  • java 壓縮圖片(只縮小體積,不更改圖片尺寸)的示例

    java 壓縮圖片(只縮小體積,不更改圖片尺寸)的示例

    這篇文章主要介紹了java 如何壓縮圖片體積,幫助大家更好的利用Java處理圖片,應(yīng)對特殊情況,感興趣的朋友可以了解下
    2020-10-10
  • 淺談Spring Boot中Redis緩存還能這么用

    淺談Spring Boot中Redis緩存還能這么用

    這篇文章主要介紹了淺談Spring Boot中Redis緩存還能這么用,這種方式是Spring Cache提供的統(tǒng)一接口,實現(xiàn)既可以是Redis,也可以是Ehcache或者其他支持這種規(guī)范的緩存框架,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Java Mybatis框架Dao層的實現(xiàn)與映射文件以及核心配置文件詳解分析

    Java Mybatis框架Dao層的實現(xiàn)與映射文件以及核心配置文件詳解分析

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄
    2021-10-10
  • 劍指Offer之Java算法習(xí)題精講鏈表專題篇

    劍指Offer之Java算法習(xí)題精講鏈表專題篇

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • IDEA啟動springboot項目報missing ServletWebServerFactory錯誤的解決方案

    IDEA啟動springboot項目報missing ServletWebServerFactory錯誤的解決

    Spring Boot項目在IDEA中啟動時報錯,經(jīng)過排查發(fā)現(xiàn)是由于Tomcat依賴的AprLifecycleListener類未被正確加載,通過將Tomcat依賴的scope從provided改為compile,解決了問題
    2025-12-12
  • 在SpringBoot中如何使用HttpClient實現(xiàn)HTTP請求

    在SpringBoot中如何使用HttpClient實現(xiàn)HTTP請求

    本文介紹了如何使用Apache?HttpClient來訪問HTTP協(xié)議的資源,并提供了詳細(xì)的使用示例,包括GET和POST請求的無參和有參調(diào)用
    2025-02-02

最新評論

玛曲县| 新营市| 阿合奇县| 甘德县| 邹平县| 墨竹工卡县| 伊宁县| 晋宁县| 漯河市| 东辽县| 浪卡子县| 巴彦淖尔市| 进贤县| 金平| 蓝田县| 福清市| 尼木县| 渝北区| 龙井市| 嘉兴市| 浦县| 微山县| 阜新市| 葫芦岛市| 湘阴县| 安阳县| 稻城县| 平度市| 长垣县| 锡林郭勒盟| 凭祥市| 新乐市| 日喀则市| 黄平县| 五指山市| 兴义市| 嘉祥县| 登封市| 宁陕县| 宜兰县| 景宁|