首页 > 解决方案 > 如何使用 Spring Boot 从 Class 中只返回少数类型?

问题描述

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

我尝试使用 Map 这也返回了我想要的方式,但我希望是否有比 Map 更容易或更快的方法。

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

我的 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;

回购类

  public interface UsersRepository extends CrudRepository<Users, 
  String> {

public Users findByUsername(String username);
}

这是休息 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;
}

有没有比地图更好的方法。任何建议都会有所帮助。

标签: javarestspring-bootspring-mvcspring-data-jpa

解决方案


实际上在 jpa 查询中有一种方法可以只返回特定的字段,这样您就可以在获取结果时直接使用。

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

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


推荐阅读