2016-04-18 5 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

私は何をすべきかデータから名前とIDを取得したい –

答えて

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

これは単にあなたが10あなたのケース であってもよい顧客のリストを受信しようとしていることを意味します。そのリストには

各要素は、Customer型のオブジェクトであり、したがって、System.out.println(customerFirst10Rows.get(i)); はあなたのCustomerクラスで使用されるフィールドの定義されたゲッターをお持ちの場合はtoString()方法

の内容は、あなたがそれらを呼び出すことができます印刷しますあなたは顧客名を表し、フィールド「名前」

を持っているように、ここで次に、あなたはすべてのフィールド

の値 Simillarlyを取得するために System.out.println(customerFirst10Rows.get(i).getName())を使用する必要があります

これ以外の場合は、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