[SPRING] Spring JdbcTemplate을 통해 동적 "in (...)"SQL 목록을 생성하는 방법은 무엇입니까?
SPRINGSpring JdbcTemplate을 통해 동적 "in (...)"SQL 목록을 생성하는 방법은 무엇입니까?
Jdbc 템플릿을 통해 SQL 쿼리에 임의의 "in ()"리스트를 생성 할 수 있습니까?
예:
"select * from t where c in (#)", 그러나 '#'은 런타임에 알려진 값의 임의의 목록 일 수 있습니다.
해결법
-
==============================
1.네, 명명 된 매개 변수로 NamedParameterJdbcTemplate 또는 SimpleJdbcTemplate을 사용하면 Spring에서 가능합니다. List 매개 변수는 java.util.List로 설정할 수 있습니다.
네, 명명 된 매개 변수로 NamedParameterJdbcTemplate 또는 SimpleJdbcTemplate을 사용하면 Spring에서 가능합니다. List 매개 변수는 java.util.List로 설정할 수 있습니다.
List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); List<SomeObject> result = simpleJdbcTemplate.query("SELECT * FROM t WHERE c in (:list)", new RowMapper<SomeObject>() { ... }, Collections.singletonMap("list", list));
이 경우 Spring은 명명 된 매개 변수를?로 대체 할 때 실제 목록의 크기를 기반으로 필요한 수의 자리 표시자를 사용하여 SQL 쿼리를 내부적으로 만듭니다.
-
==============================
2.Hibernate에서 다음 샘플을 사용할 수있다.
Hibernate에서 다음 샘플을 사용할 수있다.
if(tenors != null && tenors.length >0) sql.append(" and ip.tenor_id in (:tenors)"); ..... if(tenors != null && tenors.length >0){ query.setParameterList("tenors", tenors); } ..... SQLQuery query = (SQLQuery) getSession().createSQLQuery(sql.toString())
-
==============================
3.
SimpleJDBCTemplate is depricated now. You can use NamedParameterJdbcTemplate instead.
샘플 코드는 다음과 같습니다. 다른 종류의 매개 변수가 여러 개있는 경우 Object를 키로 사용하십시오. 그렇지 않으면 List
String sqlAllEmpl = queryLoader.getProperty("allEmployeesByLevelAndPeriod"); Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("level", levelStr); paramMap.put("periodList", periodList); gridList = namedParameterJdbcTemplate.query(sqlAllEmpl, paramMap, new YourRowMapper());
sqlAllEmpl에는 level-string과 periodList라는 두 개의 place holder가 있습니다. 이것은 SQL의 IN 문에 사용되는리스트입니다.
from https://stackoverflow.com/questions/1981683/how-to-generate-a-dynamic-in-sql-list-through-spring-jdbctemplate by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Maven 프로파일로 스프링 활성 프로파일을 설정하는 방법 (0) | 2018.12.19 |
---|---|
[SPRING] 인터페이스에서 주석과 일치하는 Spring AOP pointcut (0) | 2018.12.19 |
[SPRING] @PathVariable을 사용한 스프링 MVC 주석 컨트롤러 인터페이스 (0) | 2018.12.18 |
[SPRING] Spring annotation 기반 DI 대 XML 구성? (0) | 2018.12.18 |
[SPRING] LogBack appender를 프로그래밍 방식으로 구성 (0) | 2018.12.18 |