首页 > 解决方案 > 通过传递用户 ID 列表更新多个用户

问题描述

我正在尝试通过将用户 ID 列表作为参数传递来更新一些用户信息,我想更新我正在传递用户 ID 的用户 fo 的 isActive 字段。下面是我的控制器

@PutMapping
    @ResponseStatus(HttpStatus.OK)
    @RequestMapping("/UserUpdate")
    public ResponseEntity<?> updateUsers(List<Long> userIds) {

        **userService.updateUsers(userIds);**       

         return ResponseEntity.ok(200);
    }

updateUsers() 是我的服务中的一种方法,我必须在其中编写我尝试过的逻辑,但它不起作用

public void updateUsers(List<Long> userIds) {
         List<Users> userList= userRepository.findAll();

          for (Long i : userIds) {


                  for ( Users user : userList)

                  {
                      if(userRepository.findById(i) != null)
                      {
                      user.setIsActive(9L);
                      user.setUserName("Update Test");
                      }

我的

 public class UserDto {
    private     List<Users> userList;
     private  String appName="Users Project";
   // getters and setters removed for brevity

还有我的用户实体类

@Entity
@Table(name="USERS")
public class Users {

@Id
@Column(name="USER_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;

@Column(name="NAME")
private String userName;

@Column(name="ACTIVE")
private Long isActive;

// 为简洁起见删除了 getter 和 setter

标签: javaspring-boot

解决方案


或者,您可以使用以下代码

@Modifying
@Query("update Users u set u.isActive = ?1, u.userName = ?2 where u.userId in ?3")
void updateUsers(Long isActive, String userName, List<Long> userId);

将此代码添加到您的 userRepository 并使用该方法。


推荐阅读