MybatisPlus調(diào)用原生SQL的實現(xiàn)方法
前言
在有些情況下需要用到MybatisPlus查詢原生SQL,MybatisPlus其實帶有運行原生SQL的方法。
方法一
這也是網(wǎng)上流傳最廣的方法,但是我個人認(rèn)為這個方法并不優(yōu)雅,且采用${}的方式代碼審計可能會無法通過,會被作為代碼漏洞
public interface BaseMapper<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> { @Select("${nativeSql}") Object nativeSql(@Param("nativeSql") String nativeSql); }
使用一個自己的BaseMapper去繼承MybatisPlus自己的BaseMapper,然后所有的Mapper去繼承自己寫的BaseMapper即可。那么所有的Mapper都能查詢原生SQL了。
問題在于${nativeSql}可能會被作為代碼漏洞,不是很提倡這種寫法。
方法二
使用SqlRunner的方式執(zhí)行原生SQL。這個方法提倡。
要使用SqlRunner的前提是打開SqlRunner,編輯application.yaml增加配置如下:
mybatis-plus: global-config: enable-sql-runner: true
application.properties寫法:
mybatis-plus.global-config.enable-sql-runner=true
如果不打開會報
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");
個人比較推薦使用這種方式來查詢原生SQL,既不會污染Mapper,也不會被報出代碼漏洞。
總結(jié)
到此這篇關(guān)于MybatisPlus調(diào)用原生SQL的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)MybatisPlus調(diào)用原生SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java如何實現(xiàn)支付寶電腦支付基于servlet版本
這篇文章主要介紹了Java如何實現(xiàn)支付寶電腦支付基于servlet版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Java Semaphore實現(xiàn)高并發(fā)場景下的流量控制
在java開發(fā)的工作中是否會出現(xiàn)這樣的場景,你需要實現(xiàn)一些異步運行的任務(wù),該任務(wù)可能存在消耗大量內(nèi)存的情況,所以需要對任務(wù)進行并發(fā)控制。本文將介紹通過Semaphore類優(yōu)雅的實現(xiàn)并發(fā)控制,感興趣的可以了解一下2021-12-12Windows下apache ant安裝、環(huán)境變量配置教程
這篇文章主要介紹了Windows下apache ant安裝、環(huán)境變量配置教程,ANT的安裝很簡單,本文同時講解了驗證安裝是否成功的方法和使用方法實例,需要的朋友可以參考下2015-06-06SpringBoot使用prometheus監(jiān)控的示例代碼
這篇文章主要介紹了SpringBoot使用prometheus監(jiān)控的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03FastJson踩坑:@JsonField在反序列化時失效的解決
這篇文章主要介紹了FastJson踩坑:@JsonField在反序列化時失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06