使用Spring Security和Spring Data JPA的组合,通过自定义方法在Repository中实现自定义的findByRole方法,以返回所需的用户列表。
以下示例代码演示了如何实现自定义的findByRole方法:
在Repository中添加以下代码:
@Repository
public interface UserRepository extends JpaRepository {
// 自定义方法
List findByRolesContaining(Role role);
}
在Service层中使用自定义方法:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
// 使用自定义方法
@Override
public List getUsersByRole(Role role) {
return userRepository.findByRolesContaining(role);
}
}
然后,在Controller层中调用getUsersByRole方法:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/role/{roleId}")
public List getUsersByRole(@PathVariable Long roleId) {
Role role = new Role();
role.setId(roleId);
return userService.getUsersByRole(role);
}
}
在上面的例子中,我们首先创建了一个自定义的findByRole方法,该方法将接受一个角色参数并通过查询含有该角色的用户来返回用户列表。然后,在Service层中使用此方法来获取自定义的用户列表,并在Controller层中通过REST API将它们返回给客户端。
注意:在此示例中,我们默认Role类具有一个名为id的Long类型属性,且User类带有一个名为roles的List属性,该属性包含用户角色。如果您的实体类不同,请将代码更改为符合您的实际情况。