亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

老師我按照你寫的進行測試出現了如下問題,麻煩老師幫我看一下代碼如下

package?com.hxd.sqlAbout;

import?com.baomidou.mybatisplus.core.injector.AbstractMethod;
import?com.baomidou.mybatisplus.core.metadata.TableInfo;
import?org.apache.ibatis.mapping.MappedStatement;
import?org.apache.ibatis.mapping.SqlSource;

public?class?DeleteAllMethod?extends?AbstractMethod?{

????@Override
????public?MappedStatement?injectMappedStatement(Class<?>?mapperClass,?Class<?>?modelClass,?TableInfo?tableInfo)?{
????????String?sql="delete?from?"+tableInfo.getTableName();
????????String?method="deleteAll";
????????SqlSource?sqlSource?=?languageDriver.createSqlSource(configuration,?sql,?modelClass);

????????return?addDeleteMappedStatement(mapperClass,method,sqlSource);
????}
}
package?com.hxd.sqlAbout;

import?com.baomidou.mybatisplus.core.injector.AbstractMethod;
import?com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import?com.baomidou.mybatisplus.core.injector.methods.*;
import?org.springframework.stereotype.Component;

import?java.util.List;


@Component
public?class?SqlInjector?extends?DefaultSqlInjector?{
????@Override
????public?List<AbstractMethod>?getMethodList(Class<?>?mapperClass)?{
????????List<AbstractMethod>?methodList?=?super.getMethodList(mapperClass);
????????methodList.add(new?DeleteAllMethod());
????????return?methodList;
????}
}
package?com.hxd.mapper;

import?com.baomidou.mybatisplus.core.mapper.BaseMapper;
import?com.hxd.pojo.User;
import?org.springframework.stereotype.Repository;


@Repository
public?interface?UserMapper?extends?BaseMapper<User>?{
?int?deleteAll();
}
@RequestMapping("deletealluser")
public?String?deleteAllUser(){
????int?i=?userService.deleteAllUser();
????if(i>0){
????????return?"刪除所有成功";
????}
????return?"刪除所有失敗";
}
public?int?deleteAllUser()?{
????int?i?=?userMapper.deleteAll();
????return?i;
}

http://img1.sycdn.imooc.com//5ecccd0700012d8619160380.jpg

正在回答

2 回答

你這個問題,看著提示信息,應該不是程序的問題,而是因為數據庫外鍵的問題,你刪除所有數據,由于有的數據行有外鍵的約束,不允許你進行物理刪除。

1 回復 有任何疑惑可以回復我~
*?Consume?Time:42?ms?2020-07-10?14:18:43
*??Execute?SQL:delete?from?users
*?org.springframework.dao.DataIntegrityViolationException:
*?###?Error?updating?database.??Cause:?java.sql.SQLIntegrityConstraintViolationException:
*?Cannot?delete?or?update?a?parent?row:?a?foreign?key?constraint?fails?(`mp`.`users`,?CONSTRAINT?`manager_fks`?FOREIGN?KEY?(`manager_id`)?REFERENCES?`users`?(`id`)
*?當因為外鍵發生報錯時:
*?問題主要是刪除記錄的時候刪不了,最后發現是中間表的外鍵默認刪除時是RESTRICT,
*???當取值為No?Action或者Restrict時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除。
*???當取值為Cascade時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則也刪除外鍵在子表(即包含外鍵的表)中的記錄。
*???當取值為Set?Null時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設置子表中該外鍵值為null(不過這就要求該外鍵允許取null)。
*???解決:??把外鍵字段原來默認的Restrict改成CASCADE即可


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

老師我按照你寫的進行測試出現了如下問題,麻煩老師幫我看一下代碼如下

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號