栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis-Plus 逻辑删除不能自动填充的处理方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis-Plus 逻辑删除不能自动填充的处理方法

官方文档关于逻辑删除的描述

Gitee官方示例代码

mybatis-plus 逻辑删除无法做自动填充的问题

mybatisplus 结果_Mybatis Plus学习笔记(逻辑删除/动态填充/常用插件)

我是用的 MyBatis 版本为 2.2.1,MyBatis-Plus 版本为 3.5.0。

下面直接上代码。

package com.gtcom.backstage.injector;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.extension.injector.methods.LogicDeleteByIdWithFill;

import java.util.List;


public class MySqlInjector extends DefaultSqlInjector {

    @Override
    public List getMethodList(Class mapperClass, TableInfo tableInfo) {
        //继承原有方法
        List methodList = super.getMethodList(mapperClass, tableInfo);
        //注入新方法
        methodList.add(new LogicDeleteByIdWithFill());
        return methodList;
    }
}
package com.gtcom.backstage.configuration;

import com.gtcom.backstage.injector.MySqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MySqlInjector sqlInjectorPlus() {
        return new MySqlInjector();
    }
}
package com.gtcom.backstage.injector;

import com.baomidou.mybatisplus.core.mapper.baseMapper;


public interface MybaseMapper extends baseMapper {

    
    int deleteByIdWithFill(T entity);
}

使用代码:

这里注意直接继承 MybaseMapper,而不是 MyBatis-Plus 提供的 baseMapper。

package com.gtcom.backstage.mapper;

import com.gtcom.backstage.entity.OutputUser;
import com.gtcom.backstage.injector.MybaseMapper;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface OutputUserMapper extends MybaseMapper {
}

具体调用代码:

OutputUser outputUserForUpdate = new OutputUser();
outputUserForUpdate.setId(userId);
outputUserMapper.deleteByIdWithFill(outputUserForUpdate);

执行的 SQL:

UPDATE output_user SET update_time = ?, deleted = 1 WHERe id = ? AND deleted = 0

可以看出 update_time 字段已经被自动填充上了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号