Springboot实现批量添加,批量删除

vo:接收前端参数

@Data
public class PeoPleVo extends People {

    /**
     * 批量删除id
     */
    private Long[] ids;
    /**
     * 批量添加参数
     */
    private List<People> list;
}

controller

/**
 * 批量添加
 *
 * @param peoPleVo
 * @param request
 * @param response
 * @return
 */
@PostMapping("/addPeople")
public AjaxResult addPeople(@RequestBody PeoPleVo peoPleVo, HttpServletRequest request, HttpServletResponse response) {
    //验证权限
    if (verifyPermissions(request)) {
        return AjaxResult.error(HttpStatus.UNAUTHORIZED, "非法访问,请先登录");
    }
    String token = request.getHeader("token");
    String userName = getUserName(token);
    peoPleVo.getList().forEach(r -> {
        r.setCreateBy(userName);
        r.setUpdateBy(userName);
    });
    return AjaxResult.success(peopleService.addPeople(peoPleVo.getList()));

/**
 * 批量删除
 *
 * @param peoPleVo
 * @param request
 * @param response
 * @return
 */
@PostMapping("/delectPeople")
public AjaxResult delPeople(@RequestBody PeoPleVo peoPleVo, HttpServletRequest request, HttpServletResponse response) {
    //验证权限
    if (verifyPermissions(request)) {
        return AjaxResult.error(HttpStatus.UNAUTHORIZED, "非法访问,请先登录");
    }
    return toAjax(peopleService.delectPeople(peoPleVo.getIds()));
}
}

service

package com.thk.service;

import java.util.List;

public interface IPeopleService extends IService<People> {


 /**
 * 批量添加
 * @param list
 * @return
 */
AjaxResult addPeople(List<People> list);
/**
 * 批量删除
 * @param ids
 * @return
 */
int delectPeople(Long[] ids);
}

service实现类:

@Service
@Transactional//事务注解
public class PeopleImpl extends ServiceImpl<PeopleMapper, People> implements IPeopleService {

/**
 * 增加用户或者修改用户
 *
 * @param people
 * @return
 */
@Override
@Transactional
public AjaxResult people(People people) {
    List<People> list = baseMapper.selectpeple(people.getPhonenumber(), people.getUserName());
    for (People p : list) {
        if (p.getUserName().equals(people.getUserName())) {
            return AjaxResult.error("用户名已被注册,请登录或者重新输入");
        }
        if (p.getPhonenumber().equals(people.getPhonenumber())) {
            return AjaxResult.error("手机号已被注册,请登录或者重新输入");
        }
    }
    Date date = new Date();
    if (!phoneUtiles.VerifyPhone(people.getPhonenumber())) {
        return AjaxResult.error("请输入正确的手机号码格式");
    }
    if (!phoneUtiles.VerifyEmail(people.getEmail())) {
        return AjaxResult.error("请输入正确的邮箱格式");
    }
    //判断id是否为空,如果为空就是添加
    if (people.getId() == null) {
        SnowFlake snowFlake = new SnowFlake(2, 3);
        //生成id
        long l = snowFlake.nextId();
        //设置id
        people.setId(l);
        //密码加密
        people.setPwd(Md5Utils.hash(people.getPwd()));
        //创建时间
        people.setCreateTime(date);
        //设置状态
        people.setStatus(Constant.STARTUSING);
        //添加数据
        return AjaxResult.success(baseMapper.insert(people));
    } else {
        //如果id不为空,就是修改
        //到数据库查询是否存在这条数据,如果不存在抛出异常
        People people1 = baseMapper.selectById(people.getId());
        if (StringUtils.isNotNull(people1)) {
            return AjaxResult.error("数据不存在");
        }
        people.setUpdateTime(date);
        //修改数据
        return AjaxResult.success(baseMapper.updateById(people));
    }
}
/**
 * 批量添加
 * @param list
 * @return
 */
@Override
@Transactional//事务注解
public AjaxResult addPeople(List<People> list) {
    for (People p : list) {
        //调用添加方法
        AjaxResult people = people(p);
        Object date = people.get("data");
        System.out.println(date);
        if (date == null) {
            //事务回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return people;
        }
    }
    return AjaxResult.success();
}
/**
 * 批量删除
 * @param ids
 * @return
 */
@Override
@Transactional
public int delectPeople(Long[] ids) {
    List<Long> longs = Arrays.asList(ids);
    return baseMapper.deleteBatchIds(longs);
}

}

测试添加:

 测试结果

数据库

测试删除

测试结果

数据库

删除前

 删除后

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以使用JPA提供的@Modifying和@Query注解,编写一个自定义的删除方法,如下所示: ``` @Modifying @Query("delete from User u where u.id in :ids") void deleteByIds(@Param("ids") List<Long> ids); ``` 其中,@Modifying注解表示该方法会修改数据,@Query注解表示该方法使用JPQL语句进行查询,@Param注解表示方法参数与JPQL语句中的参数对应。 在方法中,我们可以使用in关键字来批量删除指定id的数据,ids参数为一个Long类型的List,表示要删除的id列表。 使用该方法时,只需要传入要删除的id列表即可,如下所示: ``` List<Long> ids = Arrays.asList(1L, 2L, 3L); userRepository.deleteByIds(ids); ``` 其中,userRepository为JPA提供的Repository接口,可以直接调用我们自定义的删除方法。 ### 回答2: Java Spring Boot可以通过使用JpaRepository接口中的"deleteAllInBatch"方法来实现批量删除。 首先,需要在Repository接口中定义一个扩展自JpaRepository的自定义方法,用于批量删除数据。例如: ```java import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.example.demo.model.Entity; @Repository public interface EntityRepository extends JpaRepository<Entity, Long> { void deleteAllInBatch(Iterable<Entity> entities); } ``` 然后,在Service层或Controller层中引入这个Repository,并调用"deleteAllInBatch"方法来实现批量删除。例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.demo.repository.EntityRepository; @Service public class EntityService { private final EntityRepository entityRepository; @Autowired public EntityService(EntityRepository entityRepository) { this.entityRepository = entityRepository; } public void deleteEntitiesInBatch(Iterable<Entity> entities) { entityRepository.deleteAllInBatch(entities); } } ``` 最后,在使用这个Service的地方,传入要删除的实体对象集合,即可实现批量删除。例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.example.demo.model.Entity; import com.example.demo.service.EntityService; @RestController public class EntityController { private final EntityService entityService; @Autowired public EntityController(EntityService entityService) { this.entityService = entityService; } @DeleteMapping("/entities") public void deleteEntities(@RequestBody Iterable<Entity> entities) { entityService.deleteEntitiesInBatch(entities); } } ``` 以上就是使用Java Spring Boot实现批量删除的方法。 ### 回答3: 在Java Spring Boot中实现批量删除可以通过以下步骤: 1. 首先,确保你已经创建了一个Spring Boot项目并配置好数据库连接。 2. 创建一个实体类,例如Student,用于表示需要删除的对象。添加必要的字段和注解,使其与数据库表映射。 3. 创建一个Repository接口,例如StudentRepository,继承自JpaRepository。这个接口将提供基本的CRUD操作方法。 4. 在Service层创建一个实现类,例如StudentService。注入StudentRepository来访问数据库。 5. 在Service中添加一个批量删除的方法,例如deleteStudents,接收一个包含要删除对象id的List作为参数。 6. 在deleteStudents方法中,使用JpaRepository的deleteAllByIdInBatch方法,将传入的id列表作为参数。这个方法会一次性批量删除给定的id对应的记录。 7. 在Controller层创建一个REST接口,例如StudentController,注入StudentService。 8. 在Controller中添加一个处理批量删除请求的方法,例如handleBatchDelete,接收一个包含要删除对象id的List作为参数。 9. 在handleBatchDelete方法中,调用StudentService的deleteStudents方法,并返回适当的响应。 这样,当客户端发送批量删除请求时,可以调用这个接口并传入一个包含要删除对象id的List作为参数,然后后端就会批量删除对应的记录。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值