一.逻辑删除



配置逻辑删除的字段时,logic-delete-field字段配置的是逻辑删除的实体字段名。字段类型可以是boolean和integer。
在java中默认是boolean类型。逻辑已删除值默认为1,而逻辑未删除值默认为0。当是1时代表已删除(1在数据库表中为true,true从数据库表中查询出来为1),是0时代表未删除(0在数据库表中为false,false从数据库表中查询出来为0)。
二.测试
package com.itheima.mp.service.Impl;import com.itheima.mp.service.IAddressService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;@SpringBootTest
class AddressServiceImplTest {@Autowiredprivate IAddressService addressService;@Testvoid removeById() {addressService.removeById(59L);}
}
我们测试removeById方法,删除id为59的地址,当然这只是逻辑删除。看一下log日志输出和数据库中的字段值变化。

可以看到delete语句变成了update语句,并且deleted=0条件也被加上,即删除逻辑上未被删除的。已被删除的不会再次删除。

被逻辑删除后,查询结果为null(只会查询deleted = 0,即没被逻辑删除的字段)。
