MybatisPlus調(diào)用原生SQL的實(shí)現(xiàn)方法
前言
在有些情況下需要用到MybatisPlus查詢?cè)鶶QL,MybatisPlus其實(shí)帶有運(yùn)行原生SQL的方法。
方法一
這也是網(wǎng)上流傳最廣的方法,但是我個(gè)人認(rèn)為這個(gè)方法并不優(yōu)雅,且采用${}的方式代碼審計(jì)可能會(huì)無(wú)法通過(guò),會(huì)被作為代碼漏洞
public interface BaseMapper<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> {
@Select("${nativeSql}")
Object nativeSql(@Param("nativeSql") String nativeSql);
}使用一個(gè)自己的BaseMapper去繼承MybatisPlus自己的BaseMapper,然后所有的Mapper去繼承自己寫的BaseMapper即可。那么所有的Mapper都能查詢?cè)鶶QL了。
問(wèn)題在于${nativeSql}可能會(huì)被作為代碼漏洞,不是很提倡這種寫法。
方法二
使用SqlRunner的方式執(zhí)行原生SQL。這個(gè)方法提倡。
要使用SqlRunner的前提是打開(kāi)SqlRunner,編輯application.yaml增加配置如下:
mybatis-plus:
global-config:
enable-sql-runner: trueapplication.properties寫法:
mybatis-plus.global-config.enable-sql-runner=true
如果不打開(kāi)會(huì)報(bào)
Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for xxxxxxx
使用方法:
import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
List<Map<String, Object>> mapList = SqlRunner.db().selectList("select * from test_example limit 1,10");個(gè)人比較推薦使用這種方式來(lái)查詢?cè)鶶QL,既不會(huì)污染Mapper,也不會(huì)被報(bào)出代碼漏洞。
總結(jié)
到此這篇關(guān)于MybatisPlus調(diào)用原生SQL的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)MybatisPlus調(diào)用原生SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java自學(xué)書籍推薦 程序員到架構(gòu)師必看的書
這篇文章主要為大家推薦了Java程序員到架構(gòu)師自學(xué)書籍,幫助大家不斷提高自己的專業(yè)水平,感興趣的小伙伴們可以參考一下2016-09-09
eclipse輸出Hello World的實(shí)現(xiàn)方法
這篇文章主要介紹了eclipse輸出Hello World的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Java?MapStruct優(yōu)雅地實(shí)現(xiàn)對(duì)象轉(zhuǎn)換
MapSturct?是一個(gè)生成類型安全,高性能且無(wú)依賴的?JavaBean?映射代碼的注解處理器,用它可以輕松實(shí)現(xiàn)對(duì)象轉(zhuǎn)換,下面就來(lái)和大家聊聊具體操作吧2023-06-06
Java利用釘釘機(jī)器人實(shí)現(xiàn)發(fā)送群消息
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言如何通過(guò)釘釘機(jī)器人發(fā)送群消息通知,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09
Java工廠模式用法之如何動(dòng)態(tài)選擇對(duì)象詳解
工廠設(shè)計(jì)模式可能是最常用的設(shè)計(jì)模式之一,我想大家在自己的項(xiàng)目中都用到過(guò)。本文不僅僅是關(guān)于工廠模式的基本知識(shí),更是討論如何在運(yùn)行時(shí)動(dòng)態(tài)選擇不同的方法進(jìn)行執(zhí)行,你們可以看看是不是和你們項(xiàng)目中用的一樣2023-03-03
Java自定義一個(gè)變長(zhǎng)數(shù)組的思路與代碼
有時(shí)我們希望將把數(shù)據(jù)保存在單個(gè)連續(xù)的數(shù)組中,以便快速、便捷地訪問(wèn)數(shù)據(jù),但這需要調(diào)整數(shù)組大小或者對(duì)其擴(kuò)展,下面這篇文章主要給大家介紹了關(guān)于Java自定義一個(gè)變長(zhǎng)數(shù)組的思路與代碼,需要的朋友可以參考下2022-12-12

