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

mybatis-plus阻止全表更新與刪除的實現(xiàn)

 更新時間:2023年12月28日 10:23:32   作者:javachen__  
BlockAttackInnerInterceptor 是mybatis-plus的一個內(nèi)置攔截器,用于防止惡意的全表更新或刪除操作,本文主要介紹了mybatis-plus阻止全表更新與刪除的實現(xiàn),感興趣的可以了解一下

BlockAttackInnerInterceptor 是mybatis-plus的一個內(nèi)置攔截器,用于防止惡意的全表更新或刪除操作。當(dāng)你添加了這個攔截器后,它會檢查即將執(zhí)行的 sql語句,如果有嘗試進行全表更新或刪除的語句,該攔截器會阻止這些操作。

        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
package com.zy.fast.admin.config;

import com.baomidou.mybatisplus.core.parser.ISqlParser;
import com.baomidou.mybatisplus.extension.parsers.BlockAttackSqlParser;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import net.sf.jsqlparser.statement.delete.Delete;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * @author javachen
 * @description MybatisPlus分頁工具類
 */
@Configuration
@MapperScan("com.zy.fast.admin.moudles.*.mapper")
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {

        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 設(shè)置最大單頁限制數(shù)量,默認 500 條,-1 不受限制
        paginationInterceptor.setLimit(500);
        // 開啟 count 的 join 優(yōu)化,只針對部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));

        List<ISqlParser> sqlParserList = new ArrayList<>();
        // 攻擊 SQL 阻斷解析器、加入解析鏈
        sqlParserList.add(new BlockAttackSqlParser() {
            @Override
            public void processDelete(Delete delete) {
                 //如果你想自定義做點什么,可以重寫父類方法像這樣子
                if ("sys_user_account".equals(delete.getTable().getName())) {
                    // 自定義跳過某個表,其他關(guān)聯(lián)表可以調(diào)用 delete.getTables() 判斷
                    return ;
                }
                super.processDelete(delete);
            }
        });
        paginationInterceptor.setSqlParserList(sqlParserList);

        return paginationInterceptor;
    }

}

測試不帶where條件刪除時

### Error updating database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of full table deletion
### The error may exist in file [D:\fast-admin\target\classes\mapper\system\SysUserAccountMapper.xml]
### The error may involve com.zy.fast.admin.moudles.system.mapper.SysUserAccountMapper.deleteByUserId
### The error occurred while executing an update
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of full table deletion
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.delete(DefaultSqlSession.java:212)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
	... 116 common frames omitted

到此這篇關(guān)于mybatis-plus阻止全表更新與刪除的實現(xiàn)的文章就介紹到這了,更多相關(guān)mybatis-plus阻止全表更新與刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • spring-security關(guān)于hasRole的坑及解決

    spring-security關(guān)于hasRole的坑及解決

    這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    這篇文章主要給大家介紹了關(guān)于Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot使用WebSocket實現(xiàn)向前端推送消息功能

    SpringBoot使用WebSocket實現(xiàn)向前端推送消息功能

    WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議,它實現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動發(fā)送信息給客戶端,本文給大家介紹了SpringBoot使用WebSocket實現(xiàn)向前端推送消息功能,需要的朋友可以參考下
    2024-05-05
  • Java 中的字符串常量池詳解

    Java 中的字符串常量池詳解

    本文主要介紹Java中的字符串常量池的知識,這里整理了相關(guān)資料及簡單示例代碼幫助大家學(xué)習(xí)理解此部分的知識,有需要的小伙伴可以參考下
    2016-09-09
  • Mybatis查詢多條記錄并返回List集合的方法

    Mybatis查詢多條記錄并返回List集合的方法

    這篇文章主要介紹了Mybatis查詢多條記錄并返回List集合的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中isAssignableFrom的用法詳解

    Java中isAssignableFrom的用法詳解

    下面小編就為大家?guī)硪黄狫ava中isAssignableFrom的用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 有關(guān)ThreadLocal的面試題你真的懂了嗎

    有關(guān)ThreadLocal的面試題你真的懂了嗎

    這篇文章主要介紹了面試題ThreadLocal,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-06-06
  • Java實現(xiàn)圖片轉(zhuǎn)base64完整代碼示例

    Java實現(xiàn)圖片轉(zhuǎn)base64完整代碼示例

    這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)圖片轉(zhuǎn)base64的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-12-12
  • Java利用Swagger2自動生成對外接口的文檔

    Java利用Swagger2自動生成對外接口的文檔

    這篇文章主要介紹了Java利用Swagger2自動生成對外接口的文檔,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java使用字節(jié)流、緩沖流、轉(zhuǎn)換流與對象流讀寫文件的示例代碼

    Java使用字節(jié)流、緩沖流、轉(zhuǎn)換流與對象流讀寫文件的示例代碼

    這段文章詳細介紹了Java中的流及其分類,涵蓋了字節(jié)流、緩沖流和轉(zhuǎn)換流等核心概念,文章還闡述了如何使用這些流進行文件讀寫操作,包括字節(jié)流、緩沖流、轉(zhuǎn)換流和對象流的使用方法,需要的朋友可以參考下
    2026-05-05

最新評論

岳池县| 焉耆| 泸西县| 承德市| 额尔古纳市| 成都市| 丹阳市| 开原市| 色达县| 禄丰县| 伊通| 轮台县| 开远市| 马公市| 沾益县| 天气| 大渡口区| 论坛| 历史| 教育| 丽水市| 郧西县| 台北市| 呼图壁县| 长丰县| 肥西县| 嵊泗县| 明水县| 敦化市| 句容市| 靖江市| 安徽省| 冀州市| 乐东| 乐都县| 铁力市| 益阳市| 淮北市| 中阳县| 类乌齐县| 宣武区|