mybatisplus忽略逻辑删除
时间: 2023-09-06 07:07:16 浏览: 122
Mybatis-Plus 是一个 Mybatis 的增强工具,支持快速开发,其中包括了逻辑删除功能。如果你想忽略逻辑删除,可以在使用 Mybatis-Plus 进行查询时,设置忽略逻辑删除的条件。
具体做法是在查询条件中设置 `last("and is_deleted = 0")`,这样查询时就会忽略逻辑删除的数据。示例代码如下:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", "test_user")
.last("and is_deleted = 0");
List<User> userList = userMapper.selectList(queryWrapper);
```
其中 `is_deleted` 是你在实体类中定义的逻辑删除字段名。这样,就可以忽略逻辑删除的数据进行查询了。
相关问题
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 属性是用来设置逻辑删除的字段名的。
阅读全文