복붙노트

[SPRING] NamedParameterJDBCTemplate에서 문자열 목록을 사용하여 결과를 얻는 방법

SPRING

NamedParameterJDBCTemplate에서 문자열 목록을 사용하여 결과를 얻는 방법

Spring-JDBC로 실험하기. 이 참조로 사용하고 있습니다. 같은 성을 가진 배우 목록을 얻으려고합니다. 이 코드를 실행하면 원하는 결과를 얻을 수있었습니다.

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);
    }

나는 성 (姓)의 List 을 가지고 있습니다. 내가 가진 목록을 가진 배우 목록을 얻으려면 어떻게해야합니까? 마지막 이름의 목록을 반복하고 매번 getActorsWithSameLastName ()을 호출합니까? 아니면 스프링이 반복을 수행하고 결과를 가져 오는 방식을 제공합니까? 제발 조언.

해결법

  1. ==============================

    1.IN 절을 사용하십시오 ..

    IN 절을 사용하십시오 ..

    JDBCTemplate에서 SELECT IN 절을 사용하는 방법?

    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());
    
  2. ==============================

    2.MapSqlParameterSource를 사용할 수도 있습니다.

    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);
    
  3. from https://stackoverflow.com/questions/14433438/how-to-use-a-list-of-string-in-namedparameterjdbctemplate-to-get-results by cc-by-sa and MIT license