通过传递用户ID列表更新多个用户

时间:2018-09-11 19:01:15

标签: java spring-boot

我正在尝试通过传递用户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");
                      }

我的dto

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

还有我的Users实体类

@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;

//为简便起见,删除了吸气剂和吸气剂

2 个答案:

答案 0 :(得分:1)

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

@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中并使用该方法。

答案 1 :(得分:0)

public void updateUsers(List<Long> userIds) {
   for (Long i : userIds) {
      User user = userRepository.findById(i);
         if(user != null){
            user.setIsActive(9L);
            user.setUserName("Update Test");
            // call your update method here (this is not stated in your code)
         }
    }
}