2017-07-21 28 views
1

JDBCTemplateを使用して、指定されたクエリのマップのリストを取得しようとしています。以下の方法は、私のユースケースのためのaptのようです:jdbctemplateで返される列の順序を保証する

public List<Map<String,Object>> queryForList(String sql) 
             throws DataAccessException 

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#queryForList-java.lang.String-

しかし、私は与えられた行のために、地図の順序が保証されていることを確認します。つまり、列の順序を保持したい場合は、LinkedHashMapを使用する方がよいでしょう。 JDBCTemplateを使用してこれを実現するより良い方法はありますか?私はそれが各行のためのLinkedHashMapを作成するカスタムColumnMapRowMapperを使用するように働くと思います

答えて

3

、その後、queryメソッドにこれを渡します

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#query-java.lang.String-org.springframework.jdbc.core.RowMapper-

RowMapper<Map<String, Object>> rowMapper = new ColumnMapRowMapper() 
    { 
     protected Map<String, Object> createColumnMap(int columnCount) 
     { 
      return new LinkedHashMap<>(columnCount); 
     } 
    }; 

    JdbcTemplate jdbcTemplate = new JdbcTemplate(); 

    String sql = "SELECT ...";  

    try 
    {   
     List<Map<String,Object>> results = jdbcTemplate.query(sql, rowMapper); 
     // ... 
    } 
    catch(DataAccessException e) 
    { 
     e.printStackTrace(); 
    } 
関連する問題