pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <!-- for testing --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
# DataSource Config spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:tcp://192.168.180.115:19200/~/mem/test username: root password: test # Logger Config logging: level: com.mp.logicdelete: debug mybatis-plus: # 掃描 mapper.xml mapper-locations: classpath:/mapper/*Mapper.xml global-config: banner: false db-config: logic-delete-value: 1 #默認值1 logic-not-delete-value: 0 #默認值0
啟動類
@SpringBootApplication @MapperScan("com.mq.logicdelete.mapper") public class LogicdeleteApplication { public static void main(String[] args) { SpringApplication.run(LogicdeleteApplication.class, args); } }
實體類
@Data public class User { private Integer id; private String name; private Integer age; private String email; @TableLogic private Integer isDelete; }
dao層
public interface UserMapper extends BaseMapper<User> { }
數據庫腳本
DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com'); DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主鍵ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年齡', email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', is_delete INT(11) NOT NULL DEFAULT 0 COMMENT '是否刪除', PRIMARY KEY (id) );
測試類
@RunWith(SpringRunner.class) @SpringBootTest class LogicdeleteApplicationTests { @Resource private UserMapper userMapper; @Test public void testLogicDeleteById() { userMapper.deleteById(1); } @Test public void testLogicDeleteBatchIds() { userMapper.deleteBatchIds(Arrays.asList(1, 2, 3)); } @Test public void testLogicDelete() { userMapper.delete(new QueryWrapper<User>().eq("age", 2)); } }
測試結果,運行部分測試代碼(其實底層的是update語句)