2

データベースフィールドの値を使用してリストを作成したいと思います。名前と名前の2つの列があります。フィールドの名前列にすべての名前を格納するリストを作成してから、DTOに追加したいと思います。

これは可能ですか?

4

3 に答える 3

9

あなたが従うことができるステップ: -

  • List<String>まず、すべての名前を格納するが必要です。次のように宣言します: -

    List<String> nameList = new ArrayList<String>();
    
  • これで、すべてのレコードが取得され、 に保存されましたResultSet。したがって、反復してResultSetそれぞれを取得できると思いますvaluesResultSet#getStringを取得するには、を使用する必要がありますname

  • ここで、1 つのレコードをフェッチするたびに、nameフィールドを取得してリストに追加します。

    while(resultSet.next()) {
        nameList.add(resultSet.getString("name"));
    }
    
  • について十分な情報を提供していないDTOため、これを に追加する方法を見つける必要がありArrayListますDTO

  • 上記には、必要なだけではなく、list含まれているだけです。ただし、両方が必要な場合は、フィールドとしてとを含むカスタム DTO を作成する必要があります。そして、それをすべてからインスタンス化し、namesurnamename(FullName)namesurnameResultSetList<FullName>

于 2012-10-22T10:58:53.180 に答える
3

残念ながら、JDBC はワンライナーでこれを便利に行う方法を提供していません。ただし、 jOOQなどの他の API もあります(免責事項: 私は 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());

Spring JDBC / Apache DbUtils の例では Java 8 を使用しましたが、古いバージョンの Java でも同様に実行できます。

于 2014-09-23T13:14:56.053 に答える
2

です。何を試しましたか?

データベースにアクセスするには、JDBC を使用してクエリを実行し、ResultSet.

2 つのFullName文字列フィールドと. これらを使用してループに入力するだけです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により、今後さらに属性を追加する自由が得られます。

于 2012-10-22T10:55:15.070 に答える