1)根据id进行删除
int result = userMapper.deleteById("1397387511965212673");
sql执行:
DELETE FROM user WHERE id=?
2)根据多个id批量删除
int result = userMapper.deleteBatchIds(Arrays.asList("1397387511965212673", "1397387379655892993"));
sql执行:
DELETE FROM user WHERE id IN ( ? , ? )
3)根据map条件进行删除
Map<String, Object> map = new HashMap<>();
map.put("name","刘老师");
map.put("age","18");
int result = userMapper.deleteByMap(map);
sql执行:
DELETE FROM user WHERE name = ? AND age = ?
注意:前面的三个都是物理删除,删除操作以后数据在表中并不存在,下面的是逻辑删除,逻辑删除就是更改数据库中某一个字段的状态,删除操作以后数据在表中还是存在的,通常我们用0和1来区分是否进行了物理删除。
注意:MyBatis_plus默认状态为1的已删除数据。
4)逻辑删除
(1)首先数据库中添加字段:
(2)类中添加属性名称
@TableLogic
private Integer deleted;
(3)测试
int result = userMapper.deleteById("1397425981395927042");
sql执行:
UPDATE user SET deleted=1 WHERE id=? AND deleted=0
(4)查询操作(默认查询状态为0的数据)
List<User> userList = userMapper.selectList(null);
userList.forEach(System.out::println);
sql执行:
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0