mybatis-plus除了常规的一些CRUD还有其他的的功能如下

2.逻辑删除

2.1.实现配置

步骤一、数据库准备一个逻辑删除字段,一般是deleted

步骤二、配置文件中添加入下配置

mybatis-plus之逻辑删除&自动填充&乐观锁

 步骤三、java实体上加标签如下:

mybatis-plus之逻辑删除&自动填充&乐观锁

2.2.实际案例演示

package com.ldp.demo01;

import com.ldp.entity.SysUser;
import com.ldp.mapper.SysUserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @author 姿势帝-博客园
 * @address https://www.cnblogs.com/newAndHui/
 * @WeChat 851298348
 * @create 12/14 7:13
 * @description <p>
 * 逻辑删除测试
 * </p>
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test11LogicDeleted {
    @Autowired
    private SysUserMapper sysUserMapper;

    /**
     * 逻辑删除测试
     * <p>
     * ==>  Preparing: UPDATE sys_user SET deleted=1 WHERE id=? AND deleted=0
     * ==> Parameters: 26(Integer)
     * <==    Updates: 1
     * <p>
     * 注意观察:虽然我执行的是删除,但是因为配置了逻辑删除,使用最后执行的本质sql是更新,
     * 而且在更新的sql语句中还加入了deleted=0这个条件
     * 那么试想一想,如果是查询、修改会加入deleted=0这个条件么?
     */
    @Test
    public void test01() {
        int row = sysUserMapper.deleteById(25);
        System.out.println("受影响行数:" + row);
    }

    /**
     * 测试逻辑删除下的查询
     * <p>
     * ==>  Preparing: SELECT id,version,age,gender,name,parent_id,position,account,we_chat,password,status,type,create_time,update_time,deleted
     * FROM sys_user WHERE id=? AND deleted=0
     * ==> Parameters: 25(Integer)
     * <p>
     * 注意逻辑删除下的查询是加了  AND deleted=0 作为查条件的
     */
    @Test
    public void test02() {
        SysUser sysUser = sysUserMapper.selectById(25);
        System.out.println("sysUser=" + sysUser);
    }

    /**
     * 逻辑删除下的更新
     * <p>
     * ==>  Preparing: UPDATE sys_user SET name=? WHERE id=? AND deleted=0
     * ==> Parameters: 逻辑删除测试(String), 25(Integer)
     * <p>
     * 注意从sql语句上看也是添加了deleted=0的
     */
    @Test
    public void test03() {
        int row = sysUserMapper.updateById(new SysUser().setId(25).setName("逻辑删除测试"));
        System.out.println("受影响行数=" + row);
    }

    /**
     * 逻辑删除下的新增
     * ==>  Preparing: INSERT INTO sys_user ( age, name ) VALUES ( ?, ? )
     * ==> Parameters: 18(Integer), 新增测试(String)
     * <==    Updates: 1
     * 注意从sql语句来看,在添加的时候并没有帮我们自动添加deleted=0字段的值,
     * 所有在实际生产中最佳的作法是在数据库设置默认值为0
     */
    @Test
    public void test04() {
        int row = sysUserMapper.insert(new SysUser().setName("新增测试").setAge(18));
        System.out.println("受影响行数=" + row);
    }
}
View Code

相关文章: