2016-04-18 26 views
0

打印列表<>結果我有代碼如何從數據庫

 Customer customerWithId10 = customerDao.getCustomerById(1); 

     List<Customer> customerFirst10Rows = customerDao.getCustomers(0, 10); 
     for(int i=0;i<customerFirst10Rows.size();i++){ 
      System.out.println(customerFirst10Rows.get(i)); 
     } 

,但我得到導致這樣

[email protected] [email protected] [email protected]

如何打印和獲取數據?

這裏我CustomerDao

public class CustomerDaoMysql implements CustomerDao{ 
private static final String SELECT_PAGING_QUERY 
     = "SELECT * FROM CUSTOMER LIMIT ?,?"; 
    private static final String SELECT_BY_ID_QUERY 
     = "SELECT * FROM CUSTOMER WHERE ID=?"; 
private Connection connection; 

public CustomerDaoMysql(Connection connection) { 
    this.connection = connection; 
} 
@Override 
    public List<Customer> getCustomers(Integer indexStart, Integer numOfRows) { 
    try { 
     PreparedStatement selectWithPagingPreparedStatement 
       = connection.prepareStatement(SELECT_PAGING_QUERY); 
     selectWithPagingPreparedStatement.setInt(1, indexStart); 
     selectWithPagingPreparedStatement.setInt(2, numOfRows); 
     ResultSet customerResultSet = selectWithPagingPreparedStatement.executeQuery(); 
     List<Customer> customers = new ArrayList<>(); 
     while (customerResultSet.next()) { 
      customers.add(extractCustomerFromResultSet(customerResultSet)); 
     } 
     return customers; 
    } catch (SQLException ex) { 
     Logger.getLogger(CustomerDaoMysql.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return Collections.emptyList(); 
} 

public Customer extractCustomerFromResultSet(ResultSet customerResultSet) throws SQLException { 
    Customer customer = new Customer(); 
    customer.setId(customerResultSet.getInt("ID")); 
    customer.setName(customerResultSet.getString("NAME")); 
    customer.setEmail(customerResultSet.getString("EMAIL")); 
    customer.setAddress(customerResultSet.getString("ADDRESS")); 
    Date birthDate = customerResultSet.getDate("BIRTH_DATE"); 
    customer.setBirthDate(new java.util.Date(birthDate.getTime())); 
    return customer; 

}

+1

定義'Customer'一個'toString'方法。 – Makoto

+0

您想要打印哪些客戶要素? – SpringLearner

+0

我想從數據中獲得姓名和身份證我應該怎麼做 –

回答

0
List<Customer> customerFirst10Rows = customerDao.getCustomers(0, 10); 

這只是意味着你要接受客戶的名單可能是10 你的情況。

在該列表中的每個元素的類型是客戶的對象,因此,System.out.println(customerFirst10Rows.get(i)); 打印出toString()方法的內容

如果你已經爲你的客戶類使用的字段定義getter方法,你可以打電話給他們這裏就像你有一個字段「名」代表客戶名稱

那麼你應該使用 System.out.println(customerFirst10Rows.get(i).getName())來獲取值 Simillarly的所有字段

否則,您可以爲您的Customer類覆蓋toString()方法。您想要打印您的值的方式

+0

謝謝Sawhney ,,那個程序實際上我只能得到10個數據,如果我想從表中獲取所有數據,我該怎麼辦。 –

+0

在這裏發佈您的getCustomer()方法代碼或您嘗試訪問包含SELECT查詢的數據庫的實際方法 –

+0

我在我的問題中發佈了customerDao代碼 –

0

只需在您的客戶數據類中覆蓋toString()方法即可。通過這種方式,您可以在每次操作中都打印出您的Customer對象。相關代碼如下圖所示:

@Override 
public String toString() { 
    return getName() + " , "+getSurname() + " , "+getAdress(); 
} 

你重寫toString()方法後,你的產出將是這樣的:

Lionel , Messi , Barcelona 
Cristiano , Ronaldo , Madrid