10.MybatisPlus 逻辑删除操作
2020-03-27 本文已影响0人
神奇作手
1.逻辑删除简介
逻辑删除是通过数据库字段标识来实现数据删除操作
2.逻辑删除实现
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中添加删除标识注解
@TableLogic//删除标识
private Integer deleted;//逻辑删除标识(0.未删除,1.已删除)
3.查询中排除删除标识字段及注意事项
排除删除标识字段在查询中显示,自定义的不起作用
@TableLogic//删除标识
@TableField(select = false)//排除查询显示
private Integer deleted;//逻辑删除标识(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("-->删除前数据总数:"+usersB.size());
int rows = userMapper.deleteById(1172422496554401794L);
logger.warn("-->删除影响行数:"+rows);
List<User> usersA = userMapper.selectList(null);
logger.warn("-->删除后数据总数:"+usersA.size());
usersA.forEach(System.out::println);
}
/**
* 测试删除标识是否器作用
*/
@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 数据访问层
* @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);
}