mybatis 연동 예제

참고 이러한 맵은 모두 결과 맵이며 결과를 전혀 지정하지 않으면 MyBatis가 자동으로 열과 속성을 일치시게 됩니다. 따라서 이러한 예제의 대부분은 실제로 필요한 것보다 더 자세한 예입니다. 즉, 대부분의 데이터베이스는 복잡하며 모든 경우에 따라 이 데이터베이스에 의존할 가능성은 거의 없습니다. 다음은 문을 삽입, 업데이트 및 삭제하는 몇 가지 예입니다. 모든 과거의 문에서 간단한 매개 변수의 예를 보았습니다. 매개 변수는 MyBatis에서 매우 강력한 요소입니다. 간단한 상황의 경우 90%의 경우, 예를 들어 이 예제에서는 @Results 개의 어구의 id 특성을 지정하여 ResultMap의 이름을 지정하는 방법을 보여 주며, 이 예제에서는 이에 대한 별이 많지 않습니다. 위의 예는 비관적 잠금 (또는 일반적으로 잠금)의 다른 부정적인 부작용을 표시하는 측면에서도 인상적이었습니다: 경합. “잘못된 예제”에서 계속 실행된 단일 스레드는 이전의 네 스레드와 거의 빠르다. 임의 잠금 범위를 사용한 어리석은 예는 평균적으로 잠금을 획득하려는 거의 모든 시도가 적어도 일부 차단을 했다는 사실로 이어졌습니다. 어떻게 이것을 알아낼 수 있습니까? enq: TX – 세션에서 행 잠금 경합 이벤트를 찾습니다.

예를 들어 명시적 resultMap이 없는 간단한 매핑된 문의 예제를 이미 보았습니다. 예: 이 섹션의 나머지 예제에서는 이 디렉터리 구조를 따르고 있다고 가정합니다. 이제 차량 모두에서 모든 속성결과 및 carResult로드됩니다. Java API 자체에 대해 자세히 알아보려면 디렉터리 구조를 둘러싼 모범 사례를 이해하는 것이 중요합니다. MyBatis는 매우 유연하며 파일로 거의 모든 작업을 수행 할 수 있습니다. 그러나 다른 프레임 워크와 마찬가지로 선호하는 방법이 있습니다. 이 예제에서는 사용자 지정 캐시 구현을 사용하는 방법을 보여 줍니다. 형식 특성에 지정된 클래스는 org.apache.ibatis.cache.cache 인터페이스를 구현하고 문자열 ID를 인수로 가져옵니다. 이 인터페이스는 MyBatis 프레임워크에서 더 복잡하지만 수행하는 작업을 감안할 때 간단합니다. 이러한 메서드는 SQL 매핑 XML 파일에 정의된 SELECT, INSERT, UPDATE 및 DELETE 문을 실행하는 데 사용됩니다. 그들은 매우 자명한, 각각 기본 (자동 상자 또는 래퍼), 자바 빈, POJO 또는지도 될 수있는 문과 매개 변수 객체의 ID를 합니다. 중첩된 결과 집합을 이와 같은 목록에 매핑하려면 컬렉션 요소를 사용합니다.

연결 요소와 마찬가지로 조인에서 중첩된 선택 또는 중첩된 결과를 사용할 수 있습니다. 이 문제로 인해 수백 또는 수천 개의 SQL 문이 실행될 수 있습니다. 이것이 항상 바람직하지는 않습니다. 데이터베이스가 다중 행 삽입을 지원하는 경우 목록 또는 작성자 배열을 전달하고 자동으로 생성된 키를 검색할 수 있습니다. 오버로드 된 openSession() 메서드 서명 집합을 사용하면 이러한 옵션의 조합을 선택할 수 있습니다. 작성자의 resultMap은 다음과 같이 정의되어 있습니다. 다음은 임의의 ID를 생성하는 간단한 (바보 같은) 예제입니다 (당신이 결코 하지 않을 것 같지만 MyBatis가 실제로 신경 쓰지 않는 방법을 보여줍니다): 이 예제에서 MyBatis는 결과 세트에서 각 레코드를 검색하고 해당 ID를 비교합니다. 차량 유형 값입니다. 판별자 서비스 케이스와 일치하는 경우 서비스 케이스에서 지정한 resultMap을 사용합니다.