java - 如何使用 Spring Boot 从类中仅返回几种类型?

标签 java rest spring-boot spring-mvc spring-data-jpa

我有一个包含用户信息(包括密码字段)的类。当用户登录时,它将返回类中的所有内容,包括密码。除了密码或仅保留在数据库中的任何重要数据之外,如何不返回类里面的所有内容。

我尝试使用 map ,这也返回我想要的方式,但我希望是否有比 map 更简单或更快的东西。

很少有答案建议使用 JsonIgnore 和 transient 。如果我使用这两种方法,我将无法登录。因为我需要找回密码才能登录。

我的 POJO 类

@Entity
public class Users {

@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name = "firstname")
private String firstName;

@Column(name = "lastname")
private String lastName;

@Id
@Column(name = "username")
private String username;

@Column(name = "email")
private String email;

@Column(name = "role")
private String role;

@Column(name = "password")
private String password;

repo 类

  public interface UsersRepository extends CrudRepository<Users, 
  String> {

public Users findByUsername(String username);
}

这是 Rest Api

@GetMapping("/users/{username}")
public Map<String, Object> usersCheck(@PathVariable String 
 username) {
    Map<String, Object> addUser = new HashMap<>();
    Users user = userRepo.findByUsername(username);
    addUser.put("email", user.getEmail());
    addUser.put("firstName",user.getFirstName());
 "
 "
    return addUser;
}

还有比Map更好的方法吗?任何建议都会有帮助。

最佳答案

其实有一个way在jpa查询中仅返回特定字段,以便您可以在获取结果时直接使用。

但如果您不想干扰 findByUsername 方法,只需创建 User 类的对象并仅设置所需的字段即可。

您目前使用的方法也是可行的解决方案。

关于java - 如何使用 Spring Boot 从类中仅返回几种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797620/

相关文章:

java - 如果输出 json 具有带点(.) 字符的键,如何在 Spring 中为 Rest api 创建域类

python - 如何使用Python选择x级深的JSON数据

spring-boot - 从 Spring Boot POM 文件中删除私有(private) docker 注册表凭据

java - 使用二分查找查找数字的最大索引出现次数

java - 如何调试 JBossESB?

REST API 通过 SSL 的 HTTP 基本身份验证

java - Spring Boot REST API 接受所有请求并返回空白响应

gradle - 如何创建用于Gradle Spring 启动的可执行uber jar?

Java并发

java - 在另一个 JFrame 上显示 JPanel