MyBatisPlus防全表更新與刪除的實(shí)現(xiàn)示例
說(shuō)明
針對(duì) update 和 delete 語(yǔ)句,阻止惡意的全表更新和全表刪除。
實(shí)現(xiàn)方式
配置BlockAttackInnerInterceptor攔截器

代碼
package com.example.core.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.example.web")
public class MybatisPlusConfig {
/**
* 添加攔截器
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); // 針對(duì) update 和 delete 語(yǔ)句 作用: 阻止惡意的全表更新刪除
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 如果配置多個(gè)插件,切記分頁(yè)最后添加
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多數(shù)據(jù)源可以不配具體類(lèi)型 否則都建議配上具體的DbType
return interceptor;
}
}
測(cè)試
更新全表
/**
* 更新全表
*/
@Test
public void updateAll() {
User user = new User();
user.setGender(GenderEnum.MALE);
mapper.update(user, null);
}

刪除全表
/**
* 刪除全表
*/
@Test
public void deleteAll() {
mapper.delete(null);
}

正常更新
正常更新,不受影響。
/**
* 更新一條數(shù)據(jù)
*/
@Test
public void update() {
User user = new User();
user.setId(7L);
user.setGender(GenderEnum.MALE);
mapper.updateById(user);
}

未開(kāi)啟防護(hù)前
未開(kāi)啟防護(hù)前,可以更新全表,或刪除全表。
全表更新


全表刪除


到此這篇關(guān)于MyBatisPlus防全表更新與刪除的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MyBatisPlus防全表更新與刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合Sa-Token實(shí)現(xiàn)登錄認(rèn)證的示例代碼
本文主要介紹了SpringBoot整合Sa-Token實(shí)現(xiàn)登錄認(rèn)證的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Java時(shí)間輪算法的實(shí)現(xiàn)代碼示例
本篇文章主要介紹了Java時(shí)間輪算法的實(shí)現(xiàn)代碼示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
java實(shí)現(xiàn)順序結(jié)構(gòu)線(xiàn)性列表的函數(shù)代碼
java實(shí)現(xiàn)順序結(jié)構(gòu)線(xiàn)性列表的函數(shù)代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10
SpringBoot基于自定義注解實(shí)現(xiàn)切面編程
這篇文章主要介紹了SpringBoot基于自定義注解實(shí)現(xiàn)切面編程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
JAVA中String介紹及常見(jiàn)面試題小結(jié)
這篇文章主要介紹了JAVA中String介紹及常見(jiàn)面試題,在java面試中經(jīng)常會(huì)被面試官問(wèn)到,小編通過(guò)實(shí)例代碼相結(jié)合給大家詳細(xì)介紹,需要的朋友可以參考下2020-02-02
淺談SpringBoot是如何實(shí)現(xiàn)日志的
這篇文章主要介紹了淺談SpringBoot是如何實(shí)現(xiàn)日志的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
基于Java的度分秒坐標(biāo)轉(zhuǎn)純經(jīng)緯度坐標(biāo)的漂亮國(guó)基地信息管理的方法
本文以java語(yǔ)言為例,詳細(xì)介紹如何管理漂亮國(guó)的基地信息,為下一步全球的空間可視化打下堅(jiān)實(shí)的基礎(chǔ),首先介紹如何對(duì)數(shù)據(jù)進(jìn)行去重處理,然后介紹在java當(dāng)中如何進(jìn)行度分秒位置的轉(zhuǎn)換,最后結(jié)合實(shí)現(xiàn)原型進(jìn)行詳細(xì)的說(shuō)明,感興趣的朋友跟隨小編一起看看吧2024-06-06

