有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java本机查询映射结构

我使用原生查询,得到一个元组,其中包含一组登录名、电子邮件、密码和注册日期。 我还创建了一个具有这些属性的类(这不是一个实体,我不需要它)。 问题:如何使用mapstruct(DTO)获得这个类

@Query("SELECT * FROM users .......", nativeQuery = true)
List<Tuple> getInfo();

@Data
public class UserPro {
String login;
String email;
String pass;
Date regDate;
}

共 (1) 个答案

  1. # 1 楼答案

    你就快到了,但你有一些误解的概念。如果我明白你的要求

    “getInfo”查询必须获取从查询中收到的每个“用户”。它接收到的所有信息都被保存到一个“Tuple”列表中,我想Tuple是一个模型或dto。如果您想保存从该查询中收到的内容,您必须创建一个模型,而不是dto,您可以将其称为“用户”

    DTO是用来处理与Http请求相关的数据的类,而不是查询。 模型是用来处理与数据库相关的数据的类,包括数据库查询

    在“用户”模型中,必须实例化从数据库中获得的每一列(确保将@column注释变量命名为数据库中每一列的名称相同,并为它们提供与数据库中相同的正确数据类型)

    请记住,每个用户都有一个唯一的标识符,它不必称为ID,但您必须知道该唯一标识符是谁

    实例化每个变量后,必须实例化getter和setter,以及实例化每个变量的构造函数

    例如:

    @Entity
    @Table(name = "TABLE_NAME")
    public class User implements Serializable
    {
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "PUT_HERE_YOUR_UNIQUE_INDENTIFIER_HERE")
        private "UNIQUE_INDENTIFIER_DATA_TYPE" id;
        
        @Column(name = "LOGIN_COLUMN_NAME")
        private String login;
        
        @Column(name = "EMAIL_COLUMN_NAME")
        private String email;
        
        @Column(name = "PASSWORD_COLUMN_NAME")
        private String pass;
        
        @Column(name = "REGDATE_COLUMN_NAME", nullable = false)
        private Date regDate;
    
        //default constructor
        public User() {}
    
        //user constructor
        public User()
        {
            this.id = id;
            this.login = login;
            this.email = email;
            this.pass = pass;
            this.regDate = regDate;
        }
    
        public Long getId()
        {
            return id;
        }
    
        public void setId(Long id)
        {
            this.id = id;
        }
    
        public String getLogin()
        {
            return login;
        }
    
        public void setLogin(String login)
        {
            this.login = login;
        }
    
        public String getEmail()
        {
            return email;
        }
    
        public void setEmail(String email)
        {
            this.email = email;
        }
    
        public String getPass()
        {
            return pass;
        }
    
        public void setPass(String pass)
        {
            this.pass = pass;
        }
    
        public Date getRegDate()
        {
            return regDate;
        }
    
        public void setRegDate(Date regDate)
        {
            this.regDate = regDate;
        }
    }