2013-11-18 4 views
0

Таблица содержит три столбца: Order, Item and price, к которым я обращаюсь через Jdbc Template и пытаюсь сопоставить с DTO.Как сопоставить класс с помощью шаблона jdbc

Order Item Price 
101 "xyz" 100 
101 "Pqr" 150 
101 "abc" 125 
102 "any" 200 
102 "one" 101 

можно сопоставить приведенную выше таблицу с моим DTO с, как показано ниже,

public class myDTO{ 
    String Order; // Order number 
    String Item; // item name 
    String price; // item price 
    //getter-setter below 
} 

Но я хочу, чтобы отобразить таблицу таким образом, где я бы смог связать порядок против всех предметов и цена с общим номером заказа. Я просто даю представление о ожидаемом классе DTO, но не могу его отобразить.

public class requiredDTO{ 
    String order;  
    List<String> value; 
    List<String> price; 
//getter setter below 
} 
+0

Это ORM каркас? –

+0

@RomanC Spring framework и mysql как база данных. – user1010399

+0

Я не спрашивал вас о Spring Framework или любой базе данных –

ответ

1

Вы не хотите, либо из ваших решений ... То, что вы хотите (ИМХО следующее)

public class Order { 
    private long id; 
    private Set<Item> items; 
} 

public class Item { 
    private String name; 
    private long price; 
} 

Используйте ResultSetExtractor для создания List<Order>.

public OrderResultSetExtractor implement ResultSetExtractor<List<Order>> { 
    public List<Order> extractData(ResultSet rs) throws SQLException, DataAccessException { 
     List<Order> orders = new ArrayList<Order>(); 
     Order current = null; 
     while (rs.next()) { 
      long orderId = rs.getLong(1); 
      String itemName = rs.getString(2); 
      long price = rs.getLong(3); 
      if (current == null || current.getId() != orderId) { 
       current = new Order(); 
       current.setId(orderId); 
       orders.add(current); 
      } 
      current.getItems().add(new Item(itemName, price)); 
     } 
     return orders; 
    } 
} 

Что-то в этом роде.

+0

Спасибо Deinum. проблема решена сейчас. – user1010399

1

Использование 'BeanPropertyRowMapper' Ваше имя столбца должно совпадать с именами свойств MyDTO.

getJdbcTemplate().query("SELECT Order, Item, Price FROM your_table", new BeanPropertyRowMapper(MyDTO.class)); 

Затем я рекомендую вам выполнить вашу групповую логику позже в java.

Удачи!

+0

, пожалуйста, дайте мне подсказку о групповой логике, так как я застрял в этой части. – user1010399

Смежные вопросы