August 2, 2019 Comments(0) Uncategorized

    mybatis 프로시저 호출 예제

    일부 데이터베이스에서는 저장 프로시저가 두 개 이상의 결과 집합을 반환하거나 한 번에 두 개 이상의 문을 실행하고 각 프로시저당 결과 집합을 반환할 수 있습니다. 이 데이터베이스를 한 번만 누르고 조인을 사용하지 않고 관련 데이터를 반환하는 데 사용할 수 있습니다. ResultMaps의 좋은 점은 이미 그들에 대해 많은 것을 배웠지만 아직 본 적이 없다는 것입니다! 이러한 간단한 경우는 여기에서 본 것보다 더 이상 필요하지 않습니다. 예를 들어 이 마지막 예제가 외부 resultMap으로 어떻게 보이는지 살펴보겠습니다. 표준 함수 호출과 매우 유사하게 보입니다. 이러한 차이점만 있습니다: 모든 과거의 문에서 간단한 매개 변수의 예를 보았습니다. 매개 변수는 MyBatis에서 매우 강력한 요소입니다. 간단한 상황의 경우 90 %의 경우 Java가 메서드에서 출력 매개 변수를 직접 지원하지 않으므로 일부 컨테이너 유형에서 출력 매개 변수를 반환해야합니다. 한 가지 가능성은 호출자 코드에 의해 초기화되는 일부 컬렉션 내부에 값을 반환하는 것입니다. 유용한 컨테이너로 Map 인터페이스를 사용할 수 있습니다. 프로시저의 모든 출력 매개 변수를 반환하는 데 사용할 수 있습니다.

    하드 코딩 된 문자열 상수와이 바인딩은 첫 눈에 명확하지 않다 – 반환 된 매개 변수는 몇 가지 “키”에서 매핑해야합니다, 하나의 단점이있다. cz.sidik.demo.oraclemybatis.mapper.OutputParamMapper.setEmployeeNameOut: 모든 코드가 SQL 프로시저 호출의 구문 대신 프로시저 변형과 동일하다는 것을 알 수 있습니다. 그리고 POJO에 의해 전달 값이 있는 변형도 사용할 수 있습니다 (cz.sidik.demo.oraclemybatis.mapper.OutputParamMapper.setEmployeeNameDao에서 입증). 작성자가 작성한 블로그로 구성된 지능형 개체 모델에 매핑하고 많은 게시물이 있으며 각 게시물에는 0개 또는 여러 개의 주석과 태그가 있을 수 있습니다. 다음은 복잡한 ResultMap의 전체 예입니다(작성자, 블로그, 게시물, 댓글 및 태그는 모두 유형 별칭입니다). 그것을 보세요, 하지만 걱정 하지 마세요, 우리는 각 단계를 통해 갈 거 야. 처음에는 어렵게 보일 수 있지만 실제로는 매우 간단합니다. 이 사람은 처음에 바로 그것을 얻기 위해 나에게 시간이 걸렸습니다. iBatis 데이터 원본 등을 구성하는 세부 사항으로 이동하지 않고 sqlMap 파일에 몇 가지 쿼리를 넣는 것으로 곧장 이동합니다. 이 예제에서 iBatis 2.3을 사용하고 있다는 점에 유의하십시오. 프로시저 호출부터 시작하겠습니다. 모든 데이터는 하나의 청크로 처리됩니다.

    JDBC는 Oracle DB에서 JVM으로 모든 레코드를 가져온 후 MyBatis가 resultMap 정의의 도움으로 매핑 변환을 수행한 후 커서의 모든 레코드를 처리한 후 결과는 결국 Java 코드를 호출하는 것으로 반환됩니다. 이 예제에서 저장 프로시저는 다음 쿼리를 실행하고 두 개의 결과 집합을 반환합니다. 첫 번째 에는 블로그와 두 번째 작성자도 포함됩니다. 이러한 모든 속성은 캐시 요소의 특성을 통해 수정할 수 있습니다. 예: 판별자 정의는 열 및 javaType 특성을 지정합니다. 열은 MyBatis가 비교할 값을 찾는 위치입니다. javaType은 적절한 종류의 같음 테스트가 수행되도록 하는 데 필요합니다(문자열은 거의 모든 상황에서 작동할 수 있음). 예를 들어 iBatis에게 쿼리에 전달할 매개 변수의 종류와 IN, OUT 또는 INOUT 모드를 사용해야 하는지 여부를 설명합니다. iBatis를 호출 할 때 그렇지 않으면 매개 변수에 대한 올바른 jdbcType 및 javaType을 지정하는 것이 중요합니다. 이제 JAVA 부분에 대한.

    이 문을 selectPerson이라고 하며 int(또는 정수)의 매개 변수를 가져와 행 값에 매핑된 열 이름으로 키에 묶인 HashMap을 반환합니다. 속성 값은 예를 들어, 임의의 ID를 생성할 간단한 (바보 같은) 예제를 포함 refid 특성 또는 속성 값을 포함에 사용할 수 있습니다 (뭔가 당신이 하지 않을 것 이다, 하지만이 유연성및 MyBatis 방법을 보여줍니다. 정말 상관 없어: 나는 개인적으로 @Param 주석을 사용하여 인라인 매개 변수 선언구문을 선호하고 모든 예제에서 사용합니다.