资讯专栏INFORMATION COLUMN

springboot mybaits-plus Sql 注入器 自定义逻辑删除

bitkylin / 2177人阅读

摘要:写一个类继续写一个类继承逻辑删除写一个枚举类根据参数逻辑删除根据修改数据根据逻辑删除根据修改数据最后一步就是注入到执行效率插件设置环境开启

1 写一个类继续 AbstractLogicMethod

public class LogicDeleteByWrapper extends AbstractLogicMethod {

@Override
public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) {
    String sql;
    MySqlMethod sqlMethod = MySqlMethod.LOGIC_DELETE_BY_WRAPPER;
    sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(),
            sqlWhereEntityWrapper(tableInfo));
    SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
    return addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
}

public String sqlLogicSet(){

    String sql ="
" +
            "update_by=#{et.updateBy},
" +
            "update_time=#{et.updateTime},
" +
            "is_deleted = 1
" +
            " ";
    return sql;
}

}
写一个类继承baseMapper

/**
 * 逻辑删除
 * @param entity
 * @param updateWrapper
 * @return
 */
int logicDeleteByWrapper(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper updateWrapper);

写一个枚举类

public enum MySqlMethod {

/**
 * 根据参数逻辑删除
 */
LOGIC_DELETE_BY_WRAPPER("logicDeleteByWrapper", "根据ID 修改数据", ""),

/**
 * 根据id逻辑删除
 */
LOGIC_DELETE_BY_ID("logicDeleteById", "根据ID 修改数据", "");

private final String method;
private final String desc;
private final String sql;

MySqlMethod(String method, String desc, String sql) {
    this.method = method;
    this.desc = desc;
    this.sql = sql;
}

public String getMethod() {
    return method;
}

public String getDesc() {
    return desc;
}

public String getSql() {
    return sql;
}

}

最后一步就是注入到bean

public class MyLogicSqlInjector extends AbstractSqlInjector {

@Override
public List getMethodList() {
    return Stream.of(         
            new LogicDeleteByWrapper()
    ).collect(Collectors.toList());
}


@Override
public void injectSqlRunner(Configuration configuration) {
    new SqlRunnerInjector().inject(configuration);
}

}
@Configuration
@MapperScan("com.xxx.xxx.*.dao")
public class MybatisPlusConfig {

@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}


@Bean
public ISqlInjector sqlInjector() {
    return new MyLogicSqlInjector();
}

/**
 * SQL执行效率插件
 */
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
    return new PerformanceInterceptor();
}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72668.html

相关文章

  • mybatis-plus源码分析之sql注入

    摘要:下面我会详细地从源码的角度分析下文简写成是如何实现自动注入的原理。文件解析器,解析对应的文件信息,并将文件信息注册到中。节点解析器,用于构建节点信息。注册与绑定类,将的类信息与绑定。 微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! mybatis-plus是完全基于myba...

    gougoujiang 评论0 收藏0
  • 第三十五章:SpringBoot与单元测试的小秘密

    摘要:本章目的基于平台整合分别完成客户端服务端的单元测试。在测试控制器内添加了三个测试方法,我们接下来开始编写单元测试代码。总结本章主要介绍了基于平台的两种单元测试方式,一种是在服务端采用注入方式将需要测试的或者注入到测试类中,然后调用方法即可。 单元测试对于开发人员来说是非常熟悉的,我们每天的工作也都是围绕着开发与测试进行的,在最早的时候测试都是采用工具Debug模式进行调试程序,后来Ju...

    hikui 评论0 收藏0
  • Springboot整合Quartz实现动态定时任务

    摘要:本文使用实现对定时任务的增删改查启用停用等功能。并把定时任务持久化到数据库以及支持集群。决定什么时候来执行任务。定义的是任务数据,而真正的执行逻辑是在中。封装定时任务接口添加一个暂停恢复删除修改暂停所有恢复所有 简介 Quartz是一款功能强大的任务调度器,可以实现较为复杂的调度功能,如每月一号执行、每天凌晨执行、每周五执行等等,还支持分布式调度。本文使用Springboot+Myba...

    IamDLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<