mybatis-plus

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);
    }
上一篇 下一篇

猜你喜欢

热点阅读