mybatisplus 忽略逻辑删除
时间: 2024-11-20 09:22:28 浏览: 391
MyBatisPlus是一个基于MyBatis的简化持久层框架,它提供了一些便捷的功能,包括自动处理CRUD操作、全局通用Mapper等。如果你想在MyBatisPlus中忽略某个表的逻辑删除字段,通常可以通过配置实体类来实现。
1. 首先,在你的实体类(例如User.java)中,添加`@TableLogic`注解并设置`ignore = true`。这表示MyBatisPlus不会将该字段用于逻辑删除的操作,例如`deleteById`等方法会直接删除所有记录,而不会检查逻辑删除字段。
```java
@TableLogic(ignore = true)
public class User {
private Integer id;
private String name;
//...
}
```
2. 如果你想在查询时不考虑逻辑删除,可以在查询条件中明确排除逻辑删除标识。例如:
```java
List<User> users = userMapper.selectList(null); // 查询所有用户,不关心逻辑删除状态
List<User> activeUsers = userMapper.selectList(new QueryWrapper<User>().eq("is_delete", 0)); // 查询未逻辑删除的用户
```
相关问题
mybatisplus忽略逻辑删除 查询
在MyBatisPlus中,如果想要忽略逻辑删除条件进行查询,可以使用QueryWrapper对象来构建查询条件。在构建查询条件时,可以使用`wrapper.entity`来生成where条件,这样可以忽略逻辑删除字段。下面是一个使用QueryWrapper进行查询的示例代码:
```java
@Test
public void queryTest(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", 1) // 添加其他查询条件
.eq("user_name", "John");
// SELECT * FROM test.user WHERE (user_id = ? AND deleted = ? AND user_name = ?)
// 这里的deleted=0的条件是自动生成的,会忽略我们手动添加的deleted条件
List<User> userList = userDAO.selectList(queryWrapper);
// 处理查询结果
// ...
}
```
在查询时,使用`queryWrapper.eq`等方法添加其他查询条件,然后调用`userDAO.selectList`方法进行查询。MyBatisPlus会自动生成where条件,并忽略逻辑删除字段。这样可以查询到所有满足其他条件的数据,不受逻辑删除字段的影响。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* *3* [MyBatisPlus之逻辑删除](https://blog.csdn.net/qq_43695957/article/details/123504418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
mybatisplus怎么忽略逻辑删除
在 MyBatis-Plus 中,我们可以通过设置全局配置来忽略逻辑删除。具体来说,你可以在配置类中使用 setLogicDeleteValue 和 setLogicNotDeleteValue 方法来设置逻辑删除的值,然后再调用 setGlobalConfig 方法来设置全局配置,将 isSqlInjectorEnabled 和 isLogicDeleteEnabled 属性设置为 false,就可以忽略逻辑删除了。示例代码如下:
```
@Configuration
public class MybatisPlusConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setLogicDeleteValue("1");
globalConfig.setLogicNotDeleteValue("0");
globalConfig.setSqlInjector(new LogicSqlInjector());
globalConfig.setSqlParser(new JsqlParserCountOptimize(true));
globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
globalConfig.setDbConfig(new GlobalConfig.DbConfig().setLogicDeleteField("is_deleted"));
globalConfig.setLogicDeleteEnabled(false);
globalConfig.setSqlInjectorEnabled(false);
return globalConfig;
}
}
```
其中,LogicSqlInjector 是 MyBatis-Plus 提供的一个逻辑删除的 SQL 注入器,JsqlParserCountOptimize 是一个 SQL 解析器,用于优化 SQL 的执行效率,MyMetaObjectHandler 是一个元对象处理器,用于自动填充实体类中的公共字段。DbConfig 中的 logicDeleteField 属性是用来设置逻辑删除的字段名的。
阅读全文
相关推荐
















