1.邏輯刪除簡介
邏輯刪除是通過數(shù)據(jù)庫字段標(biāo)識來實現(xiàn)數(shù)據(jù)刪除操作
2.邏輯刪除實現(xiàn)
2.1. 在yml配置文件中添加配置
# mybatis-plus配置文件
mybatis-plus:
# 指定mapper.xml文件位置
mapper-locations: classpath*:mapper/*.xml
# 邏輯刪除配置
global-config:
db-config:
logic-not-delete-value: 0 #邏輯沒刪除
logic-delete-value: 1 #邏輯已刪除
2.2. 在User中添加刪除標(biāo)識注解
@TableLogic//刪除標(biāo)識
private Integer deleted;//邏輯刪除標(biāo)識(0.未刪除,1.已刪除)
3.查詢中排除刪除標(biāo)識字段及注意事項
排除刪除標(biāo)識字段在查詢中顯示,自定義的不起作用
@TableLogic//刪除標(biāo)識
@TableField(select = false)//排除查詢顯示
private Integer deleted;//邏輯刪除標(biāo)識(0.未刪除,1.已刪除)
package com.mp.delete;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.mp.dao.UserMapper;
import com.mp.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
/**
* @Description //TODO
* @Author LL
* @Date 2020-03-26 16:47
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class deleteTest {
private final static org.slf4j.Logger logger = LoggerFactory.getLogger(deleteTest.class);
@Autowired
private UserMapper userMapper;
/**
* 測試刪除前后
*/
@Test
public void deleteById(){
List<User> usersB = userMapper.selectList(null);
logger.warn("-->刪除前數(shù)據(jù)總數(shù):"+usersB.size());
int rows = userMapper.deleteById(1172422496554401794L);
logger.warn("-->刪除影響行數(shù):"+rows);
List<User> usersA = userMapper.selectList(null);
logger.warn("-->刪除后數(shù)據(jù)總數(shù):"+usersA.size());
usersA.forEach(System.out::println);
}
/**
* 測試刪除標(biāo)識是否器作用
*/
@Test
public void select(){
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.gt(User::getAge, 20);
List<User> users = userMapper.selectList(lambdaQuery);
// List<Map<String, Object>> users = userMapper.selectMaps(lambdaQuery);
users.forEach(System.out::println);
}
}
自定義刪除方法驻子,得在條件中添加刪除過濾條件,或在SQL中添加刪除過濾條件
package com.mp.dao;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.mp.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @Description 數(shù)據(jù)訪問層
* @Author LL
* @Date 2020-03-26 16:09
*/
public interface UserMapper extends BaseMapper<User> {
@Select("select * from tb_user ${ew.customSqlSegment}")
List<User> mySelectList(@Param(Constants.WRAPPER)Wrapper<User> wrapper);
}
/**
* 自定義刪除方法
*/
@Test
public void mySelect(){
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.gt(User::getAge, 20).eq(User::getDeleted, 0);
List<User> users = userMapper.mySelectList(lambdaQuery);
users.forEach(System.out::println);
}