326.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 끝점 앞에 직접 끝점을 사용합니다.Notice that we use a direct
endpoint in front of the sql
endpoint. 이를 통해 클라이언트가 긴 sql
엔드포인트에 교환을 보낼 수 있습니다. :
URI보다 훨씬 쉽게 사용할 수 있는 URI를 사용하여 직접
DataSource
는 레지스트리에서 조회되므로 표준 Spring XML을 사용하여 DataSource
를 구성할 수 있습니다.
그런 다음 메시지를 데이터베이스에 쿼리하는 sql
구성 요소로 라우팅하는 직접
엔드포인트로 실행됩니다.
다음과 같이 Spring XML에서 DataSource
를 구성할 수 있습니다.
<jee:jndi-lookup id="myDS" jndi-name="jdbc/myDataSource"/>
<jee:jndi-lookup id="myDS" jndi-name="jdbc/myDataSource"/>
326.10.1. 이름이 지정된 매개변수 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.11로 사용 가능
아래 지정된 경로에서 projects 테이블의 모든 프로젝트를 가져오고 싶습니다. SQL 쿼리에는 2개의 명명된 매개 변수인 :#lic 및 :#min이 있습니다.
그러면 Camel이 메시지 본문 또는 메시지 헤더에서 이러한 매개변수를 조회합니다. 위 예제에서는 이름이 지정된 매개변수에 대해 상수 값
으로 두 개의 헤더를 설정합니다.
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")
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")
from("direct:projects")
.to("sql:select * from projects where license = :#lic and id > :#min order by id")