簡體   English   中英

JDBC / SQL-ID始終為0

[英]JDBC/SQL - ID is always 0

所以我想將一個硬編碼的成員插入我的Members表。 我在Eclipse上使用Spring Boot和JDBC。

這是我的schema.sql:

CREATE TABLE Members 
(
    ID int not null,
    LastName varchar(255) not null,
    FirstName varchar(255) not null,
    PhoneNumber integer not null,
    created timestamp not null,
    primary key(ID)
);

INSERT INTO MEMBERS (ID, LASTNAME, FIRSTNAME,PHONENUMBER, CREATED)
VALUES(1001, 'Max', 'Mad', 0547547547, sysdate());

我在DAO類中找到了findAll方法:

public List<Member> findAll(){
        return jtemp.query("select * from members", new BeanPropertyRowMapper<Member>(Member.class));
}

當我運行它時,它返回:

[Member [id=0, firstName=Mad, lastName=Max, phoneNumber=547547547, created=2017-10-31 18:57:21.606]]

如您所見,由於某種原因未插入ID。

我的會員類是這樣的:

public class Member {

    private long id;
    private String firstName;
    private String lastName;
    private long phoneNumber;
    private Date created;
    public Member(long id, String firstName, String lastName, long phoneNumber, Date created) {
        super();
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.phoneNumber = phoneNumber;
        this.created = created;
    }

    public long getUserId() {
        return id;
    }
    public void setUserId(long userId) {
        this.id = userId;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public long getPhoneNumber() {
        return phoneNumber;
    }
    public void setPhoneNumber(long phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }

    @Override
    public String toString() {
        return "Member [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", phoneNumber="
                + phoneNumber + ", created=" + created + "]";
    }


}

我該如何解決? 我試圖插入不同的數字,但我總是在日志中得到零。

謝謝

查詢的列名稱必須與目標對象中的設置器匹配。

您的查詢有一個名為id的列,但沒有setId方法。 您應該將setUserId重命名為setId或在查詢中將別名user_id賦予id列。

BeanPropertyRowMapper文檔中:

根據從結果集元數據獲得的列名與對應屬性的公共設置器的匹配,來映射列值。 名稱可以直接匹配,也可以通過使用“駝峰”大小寫將下划線分隔的名稱轉換為相同名稱來匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM