2012-10-22 56 views
2

我想用我的數據庫字段值創建一個列表。 有2列,名稱和姓氏。 我想創建一個列表,將名稱列中的所有名稱存儲在一個字段中,然後添加到我的DTO中。要列出的結果集

這可能嗎?

+2

是的,這是可能的。但是,你有什麼嘗試? –

+0

1)[你有什麼嘗試?](http://www.whathaveyoutried.com/)2)*「添加到我的dto。」*什麼是'DTO'? –

+1

@AndrewThompson數據傳輸對象..但我猜你知道嗎? :P –

回答

6

步驟,你可以遵循: -

  • 首先,你需要有一個List<String>將存儲所有人的名字。聲明這樣的: -

    List<String> nameList = new ArrayList<String>(); 
    
  • 現在,你把所有的記錄,獲取並存儲在ResultSet。所以我認爲你可以遍歷ResultSet並從中得到每個values。您需要使用ResultSet#getString來獲取name

  • 現在,每次您獲取一條記錄時,獲取name字段並將其添加到您的列表中。

    while(resultSet.next()) { 
        nameList.add(resultSet.getString("name")); 
    } 
    
  • 現在,因爲你沒有給你足夠的DTO信息,讓你的一部分需要了解,如何將這些ArrayList添加到您的DTO

  • 以上list只包含name,而不是surname,因爲您只需要name。但是,如果您同時需要,則需要創建自定義DTO (FullName),即 包含namesurname作爲字段。而從 每ResultSet實例並把它添加到List<FullName>

+0

我必須做的是從名爲CUSTOMER的表中讀取2列。 列名是NAME和SURNAME。 我必須將這些信息存儲在我的DTO中。 然後從我的主課我必須寫的名字和姓氏到這種格式的文件: Rohit Jain | Brain Agnew |安德魯湯普森 即時通訊仍然是新的Java所以不知道如何做到這一點,目前它寫入文件,但是這樣: Rohit,Brain,Andrew | Jain,Agnew,湯普森 我該如何解決這個問題? – user1759247

+0

@ user1759247正如我所說。創建另一個DTO - 「FullName」,其中包含兩個字段 - 「名稱」和「姓氏」。現在,對於每個ResultSet,您需要創建一個「FullName」DTO實例,並將其添加到「List」中。並且你的List將被聲明爲: - 'List ' –

+0

@ user1759247然後當你從你的'List'中獲取數據時,使用它:''list.get(0).getName()+「」+ list。得到(0).getSurname()' –

2

它是。你有什麼嘗試?

要訪問數據庫,您需要use JDBC並執行查詢,給您一個ResultSet

我將創建一個名爲FullName的類,其中包含2個字符串字段namesurname。只需使用

rs.getString("NAME"); // column name 
rs.getString("SURNAME"); 

例如

List<FullName> fullnames = new ArrayList<FullName>(); 
while (rs.next()) { 
    fullnames.add(new FullName(rs)); 
} 

請注意,我通過ResultSet對象直接填充對象。你可以選擇實現一個帶2個名字段的構造函數。

還要注意,我正在創建一個Fullname對象。所以名字/姓氏保持分開,你可以在以後自由地添加首字母等。您可能更願意重命名此Person,這會讓您可以自由添加額外的屬性。

1

JDBC遺憾的是並沒有提供任何的方式來方便地做到這一點的一個班輪。但也有其他的API,如jOOQ(聲明:我身後jOOQ公司工作):

List<DTO> list = 
DSL.using(connection) 
    .fetch("SELECT first_name, last_name FROM table") 
    .into(DTO.class); 

或者Spring JDBC

List<DTO> list = 
new JdbcTemplate(new SingleConnectionDataSource(connection, true)) 
    .query("SELECT first_name, last_name FROM table", (rs, rowNum) -> 
     new DTO(rs.getString(1), rs.getString(2)); 

或者Apache DbUtils

List<DTO> list = 
new QueryRunner() 
    .query(connection, 
      "SELECT first_name, last_name FROM table", 
      new ArrayListHandler()) 
    .stream() 
    .map(array -> new DTO((String) array[0], (String) array[1])) 
    .collect(Collectors.toList()); 

我已經使用Java 8作爲Spring JDBC/Apache DbUtils示例,但它也可以使用舊版本的Java來完成。