java - 通过传递用户 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
解决方案
或者,您可以使用以下代码
@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 并使用该方法。
推荐阅读
- c# - 生产站点上的 C# SQL 超时
- flutter - 即使在使用 ..load() 后,广告也无法在 Flutter (google_mobile_ads) 中加载
- python - 使正则表达式不贪婪
- kotlin - MotionLayout如何旋转元素?
- javascript - 是否可以从移动浏览器打开pdf文件而不是下载?
- algorithm - 算法 - 升级水桶并将水倒入大桶问题
- javascript - ckeditor 正在删除表格边框样式
- openedge - 如何创建帕斯卡?
- sql - 如何使用选择脚本将值传递给替代变量
- sql - 避免 PostgreSQL 函数中的“共享内存不足错误”