mybatisplus重写删除
时间: 2023-10-07 16:07:37 浏览: 172
要重写Mybatis-plus的删除方法,可以创建一个自定义的Sql注入器,并重写其中的deleteById()方法。在该方法中,可以先删除实体类中被标注的修改时间,然后再执行删除操作。
首先,创建一个自定义的Sql注入器,继承DefaultSqlInjector,并重写其中的getMethodList()方法。在该方法中,除了替换deleteById方法,还需要将其他方法对象保持不变。
然后,创建自定义的删除方法,并在自定义Sql注入器中使用该方法对象进行替换。
具体步骤如下:
1. 创建一个自定义的Sql注入器,命名为CustomSqlInjector,继承DefaultSqlInjector。
2. 在CustomSqlInjector中重写getMethodList()方法,将要自定义的方法对象进行更换。这里将deleteById方法和DeleteBatchByIds进行替换。
3. 在CustomSqlInjector中复制父类DefaultSqlInjector的getMethodList()方法,并将需要自定义的方法换成自定义的对象。
4. 创建自定义的删除方法,命名为CustomDeleteById,并实现Mybatis-plus的AbstractMethod接口。
5. 在CustomDeleteById的execute方法中,先删除实体类中被标注的修改时间,然后执行删除操作。
相关问题
mybatisplus逻辑删除自动填充
MyBatis Plus 可以与逻辑删除和自动填充功能结合使用,以实现在逻辑删除操作时自动填充相应字段的值。
要使用逻辑删除和自动填充功能,需要进行以下几个步骤:
1. 在数据库表中添加一个用于标识逻辑删除的字段,例如 `deleted`,通常为一个整型字段。
2. 在对应的实体类中添加一个用于映射逻辑删除字段的属性,并使用 `@TableLogic` 注解进行标识。
3. 创建一个实现了 `MetaObjectHandler` 接口的类,例如 `MyMetaObjectHandler`。
4. 在 `MyMetaObjectHandler` 类中,重写 `insertFill` 和 `updateFill` 方法,用于自动填充逻辑删除字段的值。
5. 在 MyBatis Plus 的配置文件中,添加配置项 `metaObjectHandler`,指定使用的自定义 `MetaObjectHandler` 实现类。
以下是一个示例:
```java
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "deleted", false, Boolean.class);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
@TableLogic
private Boolean deleted;
```
在上述示例中,`MyMetaObjectHandler` 类中的 `insertFill` 方法会在插入操作时自动填充 `createTime` 和 `deleted` 字段的值,而 `updateFill` 方法会在更新
mybatisplus分页插件详解
### MyBatisPlus 分页插件使用教程与配置详解
#### 一、引入依赖
为了使用MyBatisPlus分页插件,在项目的`pom.xml`文件中需加入对应的依赖。这里 `<version>` 应替换为最新版本号[^1]。
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>{latest-version}</version>
</dependency>
```
#### 二、配置分页插件
在Spring Boot项目中的配置类里注册分页拦截器,通过实现`Interceptor`接口并重写相应方法来完成自定义逻辑处理。对于简单的应用来说可以直接创建一个新的Bean实例即可满足需求。
```java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
#### 三、编写Mapper接口
当完成了上述准备工作之后就可以按照常规方式去书写自己的Mapper映射文件了。需要注意的是如果想要启用物理删除功能还需要额外设置其他参数选项。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 自动支持分页查询的方法签名
IPage<User> selectPageVo(Page<User> page);
}
```
#### 四、服务层调用
最后一步就是在Service业务逻辑层里面调用已经准备好的DAO操作函数来进行数据访问工作。此时只需传入合适的Page对象作为参数就能轻松获取到经过分页后的结果集。
```java
@Service
public class UserServiceImpl implements IUserService {
private final UserMapper userMapper;
public UserServiceImpl(UserMapper userMapper) {
this.userMapper = userMapper;
}
@Override
public PageResult getUsersByPage(Integer currentPage, Integer pageSize) {
// 创建page对象
Page<User> page = new Page<>(currentPage, pageSize);
// 执行分页查询
IPage<User> iPage = userMapper.selectPage(page, null);
// 将结果封装成统一返回体
List<User> records = iPage.getRecords();
long total = iPage.getTotal();
return new PageResult(records, total);
}
}
```
阅读全文