325.10. 샘플
아래 샘플에서는 쿼리를 실행하고 각 행이 Map<String, Object 및 키가 열 이름인 행 목록으로 결과를 검색합니다.In the sample below we execute a query and retrieve the result as a List
of rows , where each row is a Map<String, Object,
and the key is the column name.
첫째, 샘플에 사용할 테이블을 설정했습니다. 이는 단위 테스트를 기반으로 하므로 java에서 수행합니다.
SQL 스크립트 createAndPopulateDatabase.sql
에서 실행하면 아래에 설명된 것처럼 보입니다.
그런 다음 경로와 sql
구성 요소를 구성합니다. sql
엔드포인트 앞에 직접
엔드포인트를 사용합니다. 그러면 클라이언트가 long sql: URI보다 훨씬 쉽게 사용할 수 있는 URI인 직접 엔드포인트로 Exchange를 보낼 수 있습니다.This allows you to send an exchange to the direct
endpoint with the URI, direct:simple
, which is much easier for the client to use than the long sql:
URI. DataSource
는 레지스트리에서 조회되므로 표준 Spring XML을 사용하여 DataSource
를 구성할 수 있습니다.
그런 다음 메시지를 직접
끝점으로 실행하여 데이터베이스를 쿼리하는 sql
구성 요소로 라우팅합니다.
Spring XML에서 다음과 같이 DataSource
를 구성할 수 있습니다.
<jee:jndi-lookup id="myDS" jndi-name="jdbc/myDataSource"/>
325.10.1. 명명된 매개변수 사용
Camel 2.11에서 사용 가능
아래 지정된 경로에서 projects 테이블에서 모든 프로젝트를 가져오려고 합니다. SQL 쿼리에는 두 개의 매개 변수, :#lic 및 :#min이 있습니다.
그런 다음 Camel은 메시지 본문 또는 메시지 헤더에서 이러한 매개변수를 조회합니다. 위의 예에서 named 매개변수의 경우 constant value
로 두 개의 헤더를 설정합니다.
from("direct:projects") .setHeader("lic", constant("ASF")) .setHeader("min", constant(123)) .to("sql:select * from projects where license = :#lic and id > :#min order by id")
메시지 본문이 java.util.Map
인 경우 명명된 매개 변수는 본문에서 가져옵니다.
from("direct:projects") .to("sql:select * from projects where license = :#lic and id > :#min order by id")