Springboot + MySQL+ JPA Ⅲ delete方法详解

2022-08-25 08:36:33

一、deleteById(通过id进行单条删除)

Service层中添加deleteById方法(deleteById是三方件自带接口不需要再dao层中添加)

@Transactional
public void deleteById(Integer id){
	userDao.deleteById(id);
}

control层

/**
 * 通过id进行删除数据
 * @param id
 */
@GetMapping("/deleteById")
public void deleteById(Integer id){
	userService.deleteById(id);
}

删除id为20的名单,测试成功!

后台执行了两条sql,先进行select再进行delete

 二、deleteAllById(通过id进行批量删除)

Service层中添加deleteAllById方法(deleteAllById是三方件自带接口不需要再dao层中添加)

@Transactional
public void deleteAllById(Iterable ids){
	userDao.deleteAllById(ids);
}

control层

/**
 * 通过id进行批量删除
 * @param ids
 */
@GetMapping("/deleteAllById")
public void deleteAllById(Integer[] ids){
	userService.deleteAllById(Arrays.asList(ids));
}

删除id为18和19的名单,测试成功!

 后台执行了四条sql,逐条进行select然后进行delete

 三、deleteAllByIdInBatch(通过id进行批量删除)

Service层中添加deleteAllByIdInBatch方法(deleteAllByIdInBatch是三方件自带接口不需要再dao层中添加)

@Transactional
public void deleteAllByIdInBatch(Iterable ids){
	userDao.deleteAllByIdInBatch(ids);
}

control层

/**
 * 通过id进行批量删除
 * @param ids
 */
@GetMapping("/deleteAllByIdInBatch")
public void deleteAllByIdInBatch(Integer[] ids){
	userService.deleteAllByIdInBatch(Arrays.asList(ids));
}

删除id为14,17的名单,测试成功!

 后台只进行了一条sql,这个应该比deleteAllById性能高一点吧(还没有测试过)

四、deleteAllInBatch(删除所有数据)

 Service层中添加deleteAllInBatch方法(deleteAllInBatch是三方件自带接口不需要再dao层中添加)

@Transactional
public void deleteAllInBatch(){
	userDao.deleteAllInBatch();
}

control层

/**
 * 删除所有数据
 */
@GetMapping("/deleteAllInBatch")
public void deleteAllInBatch(){
	userService.deleteAllInBatch();
}

测试成功!

后台只有一行sql

五、deleteAll(删除所有数据)

 Service层中添加deleteAll方法(deleteAll是三方件自带接口不需要再dao层中添加)

@Transactional
public void deleteAll(){
	userDao.deleteAll();
}

control层

/**
 * 删除所有数据
 */
@GetMapping("/deleteAll")
public void deleteAll(){
	userService.deleteAll();
}

测试成功!

后台执行了7个sql,性能应该不如上一个deleteAllInBatch

  • 作者:若博豆
  • 原文链接:https://blog.csdn.net/qq_34465338/article/details/121336199
    更新时间:2022-08-25 08:36:33