9d384f98a8ec7c9960777a12ff35face.png

一、逻辑删除

1.逻辑删除后,将不会被查询出来。

mybatis

2.查询中排除逻辑删除字段

  1. 在Wrappers.<User>lambdaQuery().eq(User::getIsDel, 0);
  2. 自定义@TableField(select = false)

二.自动填充

本次针对数据表中的create_time、update_time字段进行自动填充实例。

1.自动填充实例

public 

2.自动填充优化

首先判断是否有当前参数,有则执行自动填充,没有则不执行自动填充。

@Component

三.乐观锁插件

1.实现步骤

@Configuration

2.主意事项

  1. 支持的数据类型只有:int、Integer、long、Long、Date、Timestamp、LocalDateTime
  2. 直属类型下 newVersion = oldVersion + 1
  3. newVersion 会回写到entity中
  4. 只支持updateById(id)与update(entity, wrapper)方法
  5. 在update(entity, wrapper)方法下,wrapper不能复用

四.性能分析插件

1.性能分析插件

    @Bean
    @Profile({"dev", "test"}) // 在dev和test环境中开启
    public PerformanceMonitorInterceptor performanceMonitorInterceptor() {
        PerformanceMonitorInterceptor pmi = new PerformanceMonitorInterceptor();
        return pmi;
    } 

2.执行sql打印日志

driver

3.创建spy.properties

#

五.多租户SQL解析器

1.示例工程(官网示例)

// 官网示例

六.动态表名SQL解析器

1.动态表名实现

ITableNameHandler 接口注入到 DynamicTableNameParser 处理器链中,将动态表名解析器注入到 MP 解析链

2.主意事项

  1. 原理为解析替换设定表名为处理器的返回表名,表名建议可以定义复杂一些避免误替换
  2. 例如:真实表名为 user 设定为 mp_dt_user 处理器替换为 user_2019 等

7.自定义方法

1.自定义方法

public 

2.alwaysUpdateSomeColumnById示例

// 在MySqlInjector.java文件中添加alwaysUpdateSomeColumnById注入。并且不更改name值

3.deleteByIdWithFill示例

// 在MySqlInjector.java文件中添加deleteByIdWithFill注入

4.insertBatchSomeColumn示例

// 在MySqlInjector.java文件中添加insertBatchSomeColumn注入
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐