您的位置:

Mybatis-plus删除操作详解

一、mybatisplus删除语句

Mybatis-plus的删除操作通过使用DeleteWrapper对要删除的数据进行封装来实现。DeleteWrapper是Mybatis-plus提供的一个 Wrapper 类, 用于构建要删除的数据的条件,删除时只需把它传递给 delete 方法即可。
以下是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.eq("age", 20);
int rows = userMapper.delete(wrapper);

  

上面代码中,首先构建了一个DeleteWrapper对象wrapper,它使用eq方法将age等于20作为要删除的条件。接着将wrapper对象传递给userMapper的delete方法,并将受影响的行数赋值给rows变量。

二、mybatisplus删除返回受影响的行数

在Mybatis-plus的删除操作中,调用delete方法后会返回受影响的行数。下面是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.eq("age", 18);
int rows = userMapper.delete(wrapper);
System.out.println("受影响的行数:" + rows);

  

三、mybatisplus删除方法

Mybatis-plus提供了多个删除方法,包括deleteById、deleteByMap、delete等多个方法。具体使用哪个方法,根据实际情况来决定。

以下是deleteById示例代码:

int rows = userMapper.deleteById(1L);
System.out.println("受影响的行数:" + rows);

以上代码中,deleteById方法删除id为1的记录,并返回受影响的行数。

四、Mybatisplus删除全表数据

删除整张表的数据需要在Wrapper中使用无条件构建删除条件。下面是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
int rows = userMapper.delete(wrapper);
System.out.println("受影响的行数:" + rows);

  

以上代码中,构建了一个无条件的DeleteWrapper对象wrapper,传递给userMapper的delete方法即可删除整张表的数据,并返回受影响的行数。

五、mybatisplus删除条件

Mybatis-plus的DeleteWrapper用于构建删除条件,可以灵活设置条件。以下是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.eq("age", 20)
    .ne("email", "test@baomidou.com")
    .like("name", "Tom");
int rows = userMapper.delete(wrapper);

  

以上代码中,构建了一个DeleteWrapper对象wrapper,通过eq、ne、like等方法设置删除条件,删除age等于20,但email不等于test@baomidou.com且name包含Tom的记录。

六、mybatisplus删除七天前数据

想要删除七天以前的数据,需要使用Mybatis-plus提供的时间查询方法,下面是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.le("create_time", LocalDateTime.now().minusDays(7));
int rows = userMapper.delete(wrapper);

  

以上代码中,构建了一个DeleteWrapper对象wrapper,调用了le方法设置条件,删除create_time小于等于当前时间减去7天的记录。

七、mybatisplus删除数据

Mybatis-plus的删除操作支持批量删除,可以用List、Map、Array等方式传递多个参数。

以下是示例代码:

List ids = Arrays.asList(1, 2, 3);
int rows = userMapper.deleteBatchIds(ids);

  

以上代码中,构建了一个List对象ids,其中包含了要删除的记录的id值。将ids传递给userMapper的deleteBatchIds方法,删除对应的记录,并返回受影响的行数。

八、mybatisplus删除不生效

在Mybatis-plus的删除操作中,如果删除不生效,可能是由于我们所构建的Wrapper对象中的条件不正确导致的。可以通过打印sql语句,定位到具体的问题,并进行调整。
以下是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.eq("age", 18);
String sql = "delete from user where age = 19";
int rows = userMapper.delete(wrapper);
System.out.println("受影响的行数:" + rows);
System.out.println("执行的sql语句:" + sql);

  

在以上代码中,我们构建了一个DeleteWrapper对象wrapper,并设置了删除条件删除age等于18的记录。但在实际执行中,我们手动编写了sql语句,删除了age等于19的记录。当我们执行程序后,会发现受影响的行数为0,这时候我们可以查看输出的sql语句,找到问题。

九、mybatisplus删除拼接的条件

在Mybatis-plus的删除操作中,如果我们需要对删除条件进行拼接,可以使用LambdaQueryWrapper的方法进行构建。

以下是示例代码:

DeleteWrapper wrapper = new DeleteWrapper<>();
wrapper.and(i -> i.eq("age", 30).or().eq("age", 40));
int rows = userMapper.delete(wrapper);

  

以上代码中构建了一个DeleteWrapper对象wrapper,通过and方法拼接了两个查询条件,删除age等于30或等于40的记录。

总结

通过本文章的介绍,我们可以看到Mybatis-plus提供了多种删除操作的方法,并且可以通过Wrapper的方法进行灵活的条件设置。但我们在使用过程中需要注意删除条件的设置和拼接,以免造成意料之外的结果。