2013-01-21 24 views
14

Thử nghiệm với Spring-JDBC. Tôi đang sử dụng this làm tài liệu tham khảo. Tôi đang cố gắng để có được một danh sách các diễn viên có cùng họ. Chạy mã này đã cho tôi kết quả mong muốn:Cách sử dụng danh sách chuỗi trong NamedParameterJDBCTemplate để nhận kết quả

public List<String> getActorsWithSameLastName(String lastName, 
      NamedParameterJdbcTemplate template) { 
     String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME=:LASTNAME"; 
     Map<String, String> paramMap = new HashMap<String, String>(); 
     paramMap.put("LASTNAME", lastName); 
     return template.queryForList(query, paramMap, String.class); 
    } 

Tôi có một List<String> họ. Làm thế nào tôi có thể có được một danh sách các diễn viên với danh sách mà tôi có? Tôi có lặp lại qua danh sách họ và gọi số getActorsWithSameLastName() mọi lúc hay mùa xuân cung cấp cách thức lặp lại và tìm nạp kết quả cho tôi? Làm ơn cho lời khuyên.

Trả lời

21

sử dụng trong khoản ..

How to use SELECT IN clause in JDBCTemplates?

List<String> lastnames= new ArrayList<>(); 

Map namedParameters = Collections.singletonMap("lastnamevalues", lastnames); 

StringBuffer recordQueryString = new StringBuffer(); 

recordQueryString.append("select FIRSTNAME, LASTNAME from ACTORS where lastname in (:lastnamevalues)"); 

List nameInvolvements = this.namedparameterJdbcTemplate.query(recordQueryString.toString(), namedParameters, new MyMapper()); 
+0

Cảm ơn một người đàn ông rất nhiều. Phản hồi tuyệt vời. –

+0

Tôi thích một dòng mã. Cảm ơn bạn –

8

Bạn cũng có thể sử dụng MapSqlParameterSource

String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME in (:LASTNAME)"; 
Set<String> ids = ....; 

MapSqlParameterSource parameters = new MapSqlParameterSource(); 
parameters.addValue("LASTNAME", ids); 

this.namedparameterJdbcTemplate.query(query.toString(), parameters); 
+0

Cảm ơn bạn, điều này làm việc cho trường hợp tôi đã có một Set của nhiều hơn một String đối tượng – Dayna