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

MyBatis Plus中執(zhí)行原生SQL語句方法常見方案

 更新時間:2025年11月13日 17:03:45   作者:愛吃土豆的馬鈴薯?????????  
MyBatisPlus提供了多種執(zhí)行原生SQL語句的方法,包括使用SqlRunner工具類、@Select注解和XML映射文件,每種方法都有其適用場景和優(yōu)缺點,本文給大家介紹MyBatis Plus中執(zhí)行原生SQL語句方法常見方案,感興趣的朋友一起看看吧

在MyBatis Plus中執(zhí)行原生SQL語句,可以根據(jù)項目配置、個人偏好以及SQL的復(fù)雜程度選擇不同的方法。下面的表格對比了幾種常見方案:

方法核心思路適用場景與說明
SqlRunner使用MyBatis Plus提供的工具類,無需Mapper。? 快速簡單,適用于臨時執(zhí)行SQL,無需編寫Mapper接口或XML。需在配置中啟用。
@Select注解將SQL語句直接寫在Mapper接口的方法上。? 推薦用于固定SQL,代碼簡潔。SQL較長時可能影響可讀性。
XML映射文件將SQL語句寫在XML文件中,通過Mapper接口調(diào)用。? 推薦用于復(fù)雜SQL或動態(tài)SQL,利于維護(hù)和管理較長、較復(fù)雜的SQL。
自定義Mapper方法在Mapper接口中定義方法,使用**${nativeSql}**接收SQL字符串。?? 高度靈活,但存在SQL注入風(fēng)險,除非必要,一般不推薦使用。

?? 如何使用這些方法

下面詳細(xì)說明前三種推薦方法的具體使用步驟。

1. 使用 SqlRunner 工具類

如果只是想快速執(zhí)行一個SQL,不希望定義額外的Mapper接口和XML文件,SqlRunner是一個很方便的選擇。

第一步:啟用SqlRunner
application.yml配置文件中開啟SqlRunner

mybatis-plus:
  global-config:
    enable-sql-runner: true

如果使用的是application.properties,則添加:

mybatis-plus.global-config.enable-sql-runner=true

第二步:編寫Java代碼
在Service或Controller中直接調(diào)用:

import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
import java.util.List;
import java.util.Map;
public class YourService {
    public void executeSQL() {
        String sql = "SELECT section_name AS 標(biāo)段名稱, company_name AS 公司名稱, equipment_quote AS 設(shè)備報價 FROM wind_turbine_project_quote_detail";
        // 執(zhí)行查詢,返回一個Map列表,每個Map對應(yīng)一行數(shù)據(jù)
        List<Map<String, Object>> resultList = SqlRunner.db().selectList(sql);
        // 遍歷結(jié)果
        for (Map<String, Object> row : resultList) {
            System.out.println("標(biāo)段名稱: " + row.get("標(biāo)段名稱"));
            System.out.println("公司名稱: " + row.get("公司名稱"));
            System.out.println("設(shè)備報價: " + row.get("設(shè)備報價"));
        }
    }
}

2. 使用 @Select 注解

對于固定的SQL,這是一種非常簡潔的方式。

在Mapper接口中定義方法
在Mapper接口(例如WindTurbineMapper)中,使用@Select注解:

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@Mapper
public interface WindTurbineMapper {
    @Select("SELECT section_name AS \"標(biāo)段名稱\", company_name AS \"公司名稱\", equipment_quote AS \"設(shè)備報價\" FROM wind_turbine_project_quote_detail")
    List<Map<String, Object>> selectQuoteDetail();
}

注意:如果別名是中文,建議使用轉(zhuǎn)義的雙引號\"括起來。

在Service中調(diào)用

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class WindTurbineService {
    @Autowired
    private WindTurbineMapper windTurbineMapper;
    public void getQuoteDetail() {
        List<Map<String, Object>> resultList = windTurbineMapper.selectQuoteDetail();
        // ... 處理結(jié)果
    }
}

3. 使用 XML 映射文件

這是管理復(fù)雜SQL的傳統(tǒng)且強(qiáng)大的方式。

第一步:創(chuàng)建Mapper接口

import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface WindTurbineMapper {
    List<Map<String, Object>> selectQuoteDetail();
}

第二步:創(chuàng)建XML映射文件
resources/mapper目錄(如果沒有請手動創(chuàng)建)下,創(chuàng)建一個對應(yīng)的XML文件,例如WindTurbineMapper.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.yourpackage.mapper.WindTurbineMapper">
    <select id="selectQuoteDetail" resultType="java.util.Map">
        SELECT 
            section_name AS "標(biāo)段名稱",
            company_name AS "公司名稱", 
            equipment_quote AS "設(shè)備報價"
        FROM wind_turbine_project_quote_detail
    </select>
</mapper>

注意namespace必須填寫Mapper接口的全限定名(包括包名),id是接口中的方法名。

第三步:在Service中調(diào)用
調(diào)用方式與使用@Select注解的例子完全相同。

?? 注意事項

  • 結(jié)果處理:以上方法返回的都是List<Map<String, Object>>,需要通過Map的鍵(即查詢中的別名,如"標(biāo)段名稱")來獲取值。
  • SQL注入:使用SqlRunner@Select注解時,請確保SQL語句是固定可控的,不要直接拼接用戶輸入,以防SQL注入攻擊。如果SQL條件需要動態(tài)變化,請考慮使用MyBatis Plus的條件構(gòu)造器配合XML,或者使用MyBatis的動態(tài)SQL功能。
  • 配置掃描:確保MyBatis Plus配置正確掃描到了Mapper接口和XML文件。如果XML文件不在默認(rèn)位置,可能需要在配置文件中指定mybatis-plus.mapper-locations。

到此這篇關(guān)于MyBatis Plus中執(zhí)行原生SQL語句方法的文章就介紹到這了,更多相關(guān)MyBatis Plus執(zhí)行原生SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Kafka調(diào)試技巧及心得分享

    Kafka調(diào)試技巧及心得分享

    Kafka消費組機(jī)制確保每個消息只被一個消費者消費,新增機(jī)器時根據(jù)策略分配分區(qū),本地調(diào)試時,修改代碼后可能需要重新測試和造消息,但可以通過配置參數(shù)控制消費偏移量,線上環(huán)境調(diào)試可以通過接口拉取處理
    2026-02-02
  • SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件

    SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件

    這篇文章主要介紹了SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • IDEA檢查項目的jdk版本需要看的地方

    IDEA檢查項目的jdk版本需要看的地方

    這篇文章主要介紹了IDEA檢查項目的jdk版本需要看的地方,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)與算法之樹(動力節(jié)點java學(xué)院整理)

    Java數(shù)據(jù)結(jié)構(gòu)與算法之樹(動力節(jié)點java學(xué)院整理)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之樹的相關(guān)知識,最主要的是二叉樹中的二叉搜索樹,需要的朋友可以參考下
    2017-04-04
  • springboot項目跟JavaScript簡單websocket使用方式

    springboot項目跟JavaScript簡單websocket使用方式

    WebSocket是一種實現(xiàn)客戶端與服務(wù)器全雙工通信的協(xié)議,它提供了低延遲和雙向數(shù)據(jù)傳輸,適用于實時應(yīng)用,通過Java的Spring框架輕松集成WebSocket,實現(xiàn)服務(wù)器端與客戶端的實時通信
    2026-01-01
  • java進(jìn)行遠(yuǎn)程部署與調(diào)試及原理詳解

    java進(jìn)行遠(yuǎn)程部署與調(diào)試及原理詳解

    這篇文章主要介紹了java進(jìn)行遠(yuǎn)程部署與調(diào)試及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Java8 自定義CompletableFuture的原理解析

    Java8 自定義CompletableFuture的原理解析

    這篇文章主要介紹了Java8 自定義CompletableFuture的原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中ThreadLocalMap解決Hash沖突的實現(xiàn)方式

    Java中ThreadLocalMap解決Hash沖突的實現(xiàn)方式

    本文主要介紹了Java中ThreadLocalMap解決Hash沖突的實現(xiàn)方式,主要方式是使用線性探測法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • java項目構(gòu)建Gradle的使用教程

    java項目構(gòu)建Gradle的使用教程

    這篇文章主要為大家介紹了java項目構(gòu)建Gradle的使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java?中的?synchronized?關(guān)鍵字詳解

    Java?中的?synchronized?關(guān)鍵字詳解

    本文詳細(xì)介紹了Java中的synchronized關(guān)鍵字,包括其基本概念、工作原理、使用場景、性能優(yōu)化技巧以及常見問題與解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-11-11

最新評論

宜兴市| 宜阳县| 临沂市| 淮北市| 黄龙县| 潜山县| 桃源县| 呈贡县| 陆川县| 八宿县| 腾冲县| 乐至县| 成安县| 景宁| 宜都市| 长子县| 容城县| 隆林| 灌云县| 江源县| 多伦县| 定兴县| 铜陵市| 祁东县| 扶余县| 陆川县| 克什克腾旗| 苗栗市| 富顺县| 乐至县| 开江县| 武威市| 奇台县| 巨鹿县| 广河县| 宕昌县| 九江市| 奎屯市| 湘西| 灌云县| 鄂托克旗|