목차
2. 연관을 사용하여 지연 로딩 구현
2.1 요구 사항
2.2mapper.xml
2.3 resultMap의 지연 로딩
Java java지도 시간 MyBatis 지연 로딩 예제에 대한 자세한 설명

MyBatis 지연 로딩 예제에 대한 자세한 설명

Jun 25, 2017 am 10:38 AM
mybatis 공부하다 짓다 깊이 들어가다

1. 지연 로딩이란 무엇입니까

resultMap은 고급 매핑을 구현할 수 있습니다(일대일 및 일대다 매핑을 달성하기 위해 연관 및 컬렉션 사용). 연관 및 컬렉션에는 지연 로딩 기능이 있습니다. .

요구사항:

주문을 조회하고 사용자 정보를 연결하는 경우. 주문 정보를 먼저 쿼리하면 요구 사항을 충족할 수 있습니다. 사용자 정보를 쿼리해야 할 경우 사용자 정보를 확인합니다. 요청 시 사용자 정보를 쿼리하는 것은 지연 로딩입니다.

지연 로드: 먼저 단일 테이블에서 쿼리한 다음 필요할 때 관련 테이블에서 관련 쿼리를 수행합니다. 이는 단일 테이블을 쿼리하는 것이 관련 방식으로 여러 테이블을 쿼리하는 것보다 빠르기 때문에 데이터베이스 성능을 크게 향상시킵니다.

2. 연관을 사용하여 지연 로딩 구현

2.1 요구 사항

연관별로 주문 쿼리 및 사용자 정보 쿼리

2.2mapper.xml

두 가지 매퍼 메소드에 해당하는 명령문을 정의해야 합니다.

(1) 주문 정보만 쿼리

SELECT * FROM 주문

주문을 쿼리하는 문에서다음 문(사용자 정보 연결)의 로드(실행)를 지연하려면 연결을 사용하세요.

    <!-- 查询订单关联查询用户  --><select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">SELECT * FROM orders</select>
로그인 후 복사

(2) 연관별 사용자 정보 조회

위에서 조회한 주문 정보에서 user_id를 사용하여 사용자 정보 조회

UserMapper.xml에서 findUserById를 사용

    <select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select>
로그인 후 복사

필요할 때 먼저 findOrdersUserLazyLoading을 실행합니다. 사용자에게 쿼리하고, fingUserById를 실행하고, resultMap 정의를 통해 지연 로딩 실행을 구성합니다.

2.3 resultMap의 지연 로딩

연속 선택을 사용하여 지연 로딩으로 실행될 문의 ID를 지정합니다.

    <!-- 延迟加载的resultMap  --><resultMap type="joanna.yan.mybatis.entity.Orders" id="OrdersUserLazyLoadingResultMap"><!-- 1.对订单信息进行映射配置 --><id column="id" property="id"/><result column="user_id" property="userId"/><result column="number" property="number"/><result column="createtime" property="createtime"/><result column="note" property="note"/><!-- 2.实现对用户信息进行延迟加载 --><!-- select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement) 
               要使用UserMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询,
               如果findUserById不在本mapper中需要前边加namespace。
             column:订单信息中关联用户信息查询的列,是user_id
              关联查询的sql理解为:
             SELECT orders.*,
                (SELECT username FROM USER WHERE orders.user_id = user.id)username,
                (SELECT sex FROM USER WHERE orders.user_id = user.id)sex
             FROM orders--><association property="user" javaType="joanna.yan.mybatis.entity.User"select="joanna.yan.mybatis.mapper.UserMapper.findUserById" column="user_id"></association></resultMap>
로그인 후 복사
E42.4Mapper.java
rreee

2.5 Test
2.5.1 테스트 아이디어

(1) Mapper 메서드(FindOrdersuserlazyloading)를 수행하고 findOrdersUserLazyLoading 내에서 Joanna.yan.mybatis.OrderscustomMapper를 호출하여 주문 정보만 쿼리합니다. 르 테이블).

(2) 프로그램에서 이전 단계에서 쿼리한 List를 순회합니다. Orders에서 getUser()를 호출하면 지연 로딩이 시작됩니다.

(3) 로딩을 지연하고 UserMapper.xml의 findUserById 메서드를 호출하여 사용자 정보를 얻습니다.

2.5.2 지연 로딩 구성

mybatis는 기본적으로 지연 로딩을 활성화하지 않으며 SqlMapConfig.xml에서 구성해야 합니다.

mybatis 코어 구성 파일에 구성됨:

lazyLoadingEnabled, 적극적인LazyLoading

항목 설정lazyLoadingEnabledaggressiveLazyLoadingSqlMapConfig.xml에 구성됨:

Description

허용 값

기본값

전역적으로 지연 로딩을 설정합니다. 'false'로 설정하면 연관된 모든 항목이 처음에 로드됩니다.

true | false

false

'true'로 설정하면 지연 로드된 객체가 게으른 속성과 함께 완전히 로드될 수 있습니다. 그렇지 않으면 요청 시 각 속성이 로드됩니다.

true | false

true

    //查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
로그인 후 복사

2.5.3 테스트 코드
     <!-- 全局配置参数,需要时再设置  --> <settings> <!-- 打开延迟加载的开关  --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 将积极加载改为消极加载即按需要加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
로그인 후 복사

2. 게으른 로딩에 대한 6가지 생각
제공되지 않음 by mybatis 연관 및 컬렉션에서 지연 로딩을 구현하는 방법은 무엇입니까?

구현 방법은 다음과 같습니다.

두 개의 매퍼 메소드 정의:

(1) 주문 목록 조회

(2) 사용자 ID를 기반으로 사용자 정보 조회

구현 아이디어: 먼저 획득할 첫 번째 매퍼 메소드를 조회합니다. 주문 정보 목록

테스트 프로그램에서는 필요에 따라 두 번째 매퍼 메소드를 호출하여 사용자 정보를 쿼리합니다.

즉, 지연 로딩 방법을 사용하면 먼저 간단한 SQL(단일 테이블이 바람직하지만 관련 쿼리도 가능)을 쿼리한 다음 필요에 따라 관련 쿼리에 대한 기타 정보를 로드합니다.

위 내용은 MyBatis 지연 로딩 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MyBatis 동적 SQL 태그의 Set 태그 기능에 대한 자세한 설명 MyBatis 동적 SQL 태그의 Set 태그 기능에 대한 자세한 설명 Feb 26, 2024 pm 07:48 PM

MyBatis 동적 SQL 태그 해석: Set 태그 사용법에 대한 자세한 설명 MyBatis는 풍부한 동적 SQL 태그를 제공하고 데이터베이스 작업 명령문을 유연하게 구성할 수 있는 탁월한 지속성 계층 프레임워크입니다. 그 중 Set 태그는 업데이트 작업에서 매우 일반적으로 사용되는 UPDATE 문에서 SET 절을 생성하는 데 사용됩니다. 이 기사에서는 MyBatis에서 Set 태그의 사용법을 자세히 설명하고 특정 코드 예제를 통해 해당 기능을 보여줍니다. Set 태그란 무엇입니까? Set 태그는 MyBati에서 사용됩니다.

MyBatis의 캐싱 메커니즘 분석: 1단계 캐시와 2단계 캐시의 특성 및 사용량 비교 MyBatis의 캐싱 메커니즘 분석: 1단계 캐시와 2단계 캐시의 특성 및 사용량 비교 Feb 25, 2024 pm 12:30 PM

MyBatis 캐싱 메커니즘 분석: 1단계 캐시와 2단계 캐시의 차이점 및 적용 MyBatis 프레임워크에서 캐싱은 데이터베이스 작업 성능을 효과적으로 향상시킬 수 있는 매우 중요한 기능입니다. 그중 1단계 캐시와 2단계 캐시는 MyBatis에서 일반적으로 사용되는 두 가지 캐싱 메커니즘입니다. 이 기사에서는 1차 수준 캐시와 2차 수준 캐시의 차이점과 적용을 자세히 분석하고 설명할 구체적인 코드 예제를 제공합니다. 1. 레벨 1 캐시 레벨 1 캐시는 로컬 캐시라고도 하며 기본적으로 활성화되어 있으며 끌 수 없습니다. 첫 번째 수준 캐시는 SqlSes입니다.

C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 Feb 24, 2024 pm 11:21 PM

C 언어 학습의 매력: 프로그래머의 잠재력을 여는 것 지속적인 기술 발전으로 컴퓨터 프로그래밍은 많은 주목을 받는 분야가 되었습니다. 많은 프로그래밍 언어 중에서 C 언어는 항상 프로그래머들에게 사랑을 받아 왔습니다. C 언어의 단순성, 효율성 및 폭넓은 적용 덕분에 많은 사람들이 프로그래밍 분야에 입문하는 첫 번째 단계는 C 언어입니다. 이 기사에서는 C 언어 학습의 매력과 C 언어 학습을 통해 프로그래머의 잠재력을 발휘하는 방법에 대해 설명합니다. 우선, C 언어 학습의 매력은 단순함에 있습니다. C언어는 다른 프로그래밍 언어에 비해

워드에서 근수를 입력하는 방법을 함께 알아볼까요? 워드에서 근수를 입력하는 방법을 함께 알아볼까요? Mar 19, 2024 pm 08:52 PM

Word에서 텍스트 내용을 편집할 때 수식 기호를 입력해야 하는 경우가 있습니다. 어떤 사람들은 Word에서 근수를 입력하는 방법을 모르기 때문에 편집자에게 Word에서 근수를 입력하는 방법에 대한 튜토리얼을 친구들과 공유해달라고 요청했습니다. 그것이 내 친구들에게 도움이 되기를 바랍니다. 먼저 컴퓨터에서 Word 소프트웨어를 연 다음 편집하려는 파일을 열고 루트 기호를 삽입해야 하는 위치로 커서를 이동합니다. 아래 그림 예를 참조하세요. 2. [삽입]을 선택한 후, 기호에서 [수식]을 선택하세요. 아래 그림의 빨간색 원과 같이 3. 아래의 [새 수식 삽입]을 선택하세요. 아래 그림의 빨간색 원과 같이 4. [부수]를 선택한 후 해당 부수를 선택합니다. 아래 그림의 빨간색 원에 표시된 대로:

Go 언어의 주요 기능을 처음부터 배우세요 Go 언어의 주요 기능을 처음부터 배우세요 Mar 27, 2024 pm 05:03 PM

제목: Go 언어의 주요 기능을 처음부터 배우세요. Go 언어는 간단하고 효율적인 프로그래밍 언어로 개발자들이 선호합니다. Go 언어에서 main 함수는 진입 함수이고, 모든 Go 프로그램은 프로그램의 진입점으로 main 함수를 포함해야 합니다. 이 글에서는 Go 언어의 주요 기능을 처음부터 배우는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 먼저 Go 언어 개발 환경을 설치해야 합니다. 공식 홈페이지(https://golang.org)에 접속하시면 됩니다.

Mistlock Kingdom의 야생에서도 건물을 지을 수 있나요? Mistlock Kingdom의 야생에서도 건물을 지을 수 있나요? Mar 07, 2024 pm 08:28 PM

플레이어는 Mistlock 왕국에서 플레이할 때 건물을 짓기 위해 다양한 재료를 수집할 수 있습니다. 많은 플레이어가 야생에서 건물을 지을 수 있는지 알고 싶어합니다. Mistlock 왕국에서는 건물이 제단 범위 내에 있어야 합니다. . Mistlock Kingdom에서는 야생에 건물을 지을 수 있나요? 답변: 아니요. 1. 미스트락 왕국의 야생 지역에는 건물을 지을 수 없습니다. 2. 건물은 제단의 범위 내에서 건축되어야 한다. 3. 플레이어 스스로 Spirit Fire Altar를 설치할 수 있지만, 범위를 벗어나면 건물을 지을 수 없습니다. 4. 산에 직접 구멍을 파서 집으로 삼을 수도 있어 건축자재를 소모할 필요가 없습니다. 5. 플레이어가 직접 지은 건물에는 편안함 메커니즘이 있습니다. 즉, 인테리어가 좋을수록 편안함이 높아집니다. 6. 높은 편안함은 플레이어에게 다음과 같은 속성 보너스를 제공합니다.

MyBatis 콘솔에서 SQL 출력의 실시간 모니터링 MyBatis 콘솔에서 SQL 출력의 실시간 모니터링 Feb 25, 2024 pm 03:48 PM

MyBatis는 편리한 SQL 매핑 및 데이터베이스 작업 기능을 제공하여 개발자가 데이터베이스와 보다 효율적으로 상호 작용할 수 있도록 하는 인기 있는 지속성 계층 프레임워크입니다. 실제 개발 과정에서 SQL 쿼리를 더 효과적으로 디버깅하고 최적화하기 위해 MyBatis가 실행한 SQL 문을 콘솔에서 실시간으로 인쇄해야 하는 경우가 있습니다. 이 기사에서는 MyBatis의 콘솔에서 SQL의 실시간 인쇄를 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 My를 추가해야 합니다.

20개의 Dune 분석 대시보드를 이해하고 체인의 추세를 빠르게 파악하세요. 20개의 Dune 분석 대시보드를 이해하고 체인의 추세를 빠르게 파악하세요. Mar 13, 2024 am 09:19 AM

원저자: Minty, 암호화 KOL 원본 편집: Shenchao TechFlow 사용법을 알고 있다면 Dune은 올인원 알파 도구입니다. 20개의 Dune 대시보드를 사용하여 연구를 한 단계 더 발전시키세요. 1. TopHolder 분석 @dcfpascal이 개발한 이 간단한 도구는 보유자의 월간 활동, 고유 보유자 수, 지갑 손익 비율과 같은 지표를 기반으로 토큰을 분석할 수 있습니다. 방문 링크: https://dune.com/dcfpascal/token-holders2 토큰 개요 측정항목 @andrewhong5297이 사용자 작업을 분석하여 토큰을 평가하는 방법을 제공하는 이 대시보드를 만들었습니다.

See all articles