mybatis-plus除了常规的一些CRUD还有其他的的功能如下
2.逻辑删除
2.1.实现配置
步骤一、数据库准备一个逻辑删除字段,一般是deleted
步骤二、配置文件中添加入下配置
步骤三、java实体上加标签如下:
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); } }