1. 개요
mybatis에서 매핑을 선택하면 resulttype 또는 resultmap과 함께 리턴 유형을 사용할 수 있습니다. resulttype는 리턴 유형을 직접 나타내는 반면 resultMap은 외부 결과 맵에 대한 참조이지만 resultType 및 resultMap은 동시에 존재할 수 없습니다.
MyBatis가 매핑을 쿼리하는 경우, 실제로 각 속성 쿼리는 해당 맵에 배치됩니다. 여기서 키는 속성 이름이고 값은 해당 값입니다.
제공된 반환 유형 속성이 resultType 인 경우 MyBatis는 맵에서 키 값 쌍을 취해 resultType에 의해 지정된 객체의 해당 속성에 할당됩니다. 실제로 MyBatis의 각 쿼리 맵의 리턴 유형은 결과 맵입니다. 그러나 제공된 반환 유형 속성이 resultType 일 때 myBatis는 resultType에 의해 지정된 객체의 속성에 해당 값을 자동으로 할당합니다.
map 맵이 도메인 모델을 잘 나타낼 수 없기 때문에 제공된 반환 유형이 resultMap이면 해당 객체 자체로 더 변환해야하므로 종종 복잡한 쿼리에서 매우 유용합니다.
2. 결과 스타일
blog.javapublic 클래스 블로그 {private int id; 개인 문자열 제목; 개인 문자열 콘텐츠; 개인 문자열 소유자; 개인 목록 <주석> 댓글;}해당 데이터베이스 테이블은 ID, 제목, 내용 및 소유자 속성을 저장합니다.
<faintealias alias = "blog"type = "com.tiantian.mybatis.model.blog"/> <select id = "selectblog"parametertype = "int"resulttype = "blog"> select * from t_blog where #{id} </select>MyBatis는 결과 맵 객체를 자동으로 생성 한 다음 찾은 속성 이름을 기반으로 키 값 쌍을 캡슐화합니다. 그런 다음 리턴 유형이 블로그 객체임을 알게 된 다음 resultMap에서 블로그 객체에 해당하는 키 값 쌍을 꺼내서 할당합니다.
3. 결과 맵
또한 반환 유형이 직접 결과 맵인 경우에도 매우 유용하며, 간단한 쿼리를 수행 할 필요가 없기 때문에 복잡한 조인트 쿼리에 주로 사용됩니다. 먼저 리턴 유형 resultmap이있는 간단한 쿼리를 살펴본 다음 복잡한 쿼리 사용을 살펴보십시오.
simple 간단한 쿼리
<resultmap type = "blog"id = "blogresult"> <id councm = "id"property = "id"/> <result column = "title"propertion = "title"속성 = "title"/<result column = "content"property = "content"/> <result column = "소유자"속성 = "소유자"속성 = "소유자"소유자 "속성 ="result = "result camil ="result = "result ="result = "" "" "" "" 속성 = "소유자"/> <</resultmap> <select id = "selectblog"parametertype = "int"resultmap = "blogresult"> select * from t_blog where id = #{id} </select>선택 맵에서 결과 맵의 값은 외부 resultmap의 ID이며, 어떤 결과가 매핑되었는지를 나타냅니다. 외부 resultmap의 유형 속성은 resultmap의 결과가 어떤 유형인지를 나타냅니다. 다음은 블로그 유형이 있으므로 Mybatis는 블로그 객체로 가져갑니다. resultmap 노드의 하위 노드 ID는 객체의 ID를 식별하는 데 사용되는 반면 결과 자식 노드는 간단한 속성을 식별하는 데 사용됩니다. 열 속성은 데이터베이스에서 쿼리 된 속성을 나타내며, 속성은 쿼리 된 속성의 해당 값이 엔티티 오브젝트에 할당되는 속성을 나타냅니다. 이것은 간단한 쿼리를 위해 resultMap을 작성하는 방법입니다.
comcomplex 쿼리
블로그 참조가있는 댓글 클래스가 있는데, 어떤 블로그가 있는지를 나타냅니다. 댓글을 쿼리 할 때 해당 블로그를 찾아 블로그 속성에 할당해야합니다.
공개 클래스 댓글 {private int id; private string content; private date content (private date commentdate = new date =); 개인 블로그 블로그;} <! resultmap = "commentResult"> select *에서 * select * from t_comment where id = #{id} </select> <select id = "selectBlog"parameterType = "int"resultType = "blog"> select * from t_blog id = #{id} </select>먼저 선택 Comment로 ID를 사용하여 선택 맵을 요청한 다음 homsResult로 id가있는 resultmap 객체를 얻으십시오. 해당 resultmap의 리턴 유형은 연관 노드가 하나만있는 주석 개체이며 위에서 언급 한 간단한 쿼리에 해당하는 ID 및 결과 노드가 없습니다. 그러나 여전히 해당 ID 및 기타 속성을 주석 개체에 할당합니다. 이것이 앞에서 언급 한 MyBatis가 자동 캡슐화 기능을 가지고있는 것입니다. 리턴 유형이 제공되는 한 Mybatis는 쿼리 결과를 사용하여 자체 판단에 따라 해당 객체를 캡슐화합니다. 따라서 위의 간단한 쿼리에서, 어떤 필드가 ID에 해당하는지, 어떤 필드가 resultMap의 제목에 해당하는지 명확하게 나타내지 않으면 MyBatis는 자체 판단에 따라이를 캡슐화하는 데 도움이됩니다. Mybatis 자신의 판단은 쿼리 필드 또는 해당 별칭을 반환 오브젝트의 속성과 비교하는 것입니다. 일치하고 유형이 일치하면 Mybatis가 할당합니다. 블로그 속성은 위의 해당 resultmap에 연결되어 있으며 해당 Java 유형은 블로그입니다. 위의 쓰기 방법에서 관련 객체는 하위 쿼리를 통해 연결되며 물론 연관 쿼리를 통해 직접 연결할 수도 있습니다. 위의 연관성 자식 노드에서 속성 속성은 어떤 관련 속성이 resultmap 리턴 유형인지를 나타냅니다. 위의 예에서, 블로그 속성은 댓글에 의해 관리됩니다. SELECT 해당 관련 속성을 맵핑 할 맵을 선택하십시오. 열은 id commentResult가있는 resultMap에 해당하는 키 값 쌍을 나타냅니다. 이 키 값 쌍은 관련 객체의 하위 쿼리에 대한 매개 변수로 사용됩니다. Javatype는 Java의 현재 관련 객체의 현재 유형을 나타냅니다.
위의 경우 일대일의 경우 일대일 또는 일대일 관계에 대한 쿼리가 소개됩니다. 실제 응용 프로그램에는 더 자주 사용하는 다른 응용 프로그램이 있습니다. 일대일을 통해 해당 더 많은 당사자를 찾는 것입니다. 더 많은 당사자를 꺼낼 때는 일대일도 일대일을 연관시켜야합니다. 블로그 객체를 꺼내고 해당 의견을 모두 꺼내고 의견을 제시 할 때는 여전히 요청을 통해 Java에서 가져 오는 해당 블로그를 꺼내야합니다.
<!-from blogmapper.xml 파일-> <resultmap type = "blog"id = "blogresult"> <id councle = "id"property = "id"/<collection property = "collection"select "select"= "selectCommentsByBlog"열 = "id"oftype = "댓글"> </collection> </resultmap type = "id id induct"> <socciation ""blog " javatype = "blog"column = "blog"select = "selectblog"/> </resultmap> <select id = "selectBlog"parameterType = "int"resultmap = "blogresult"> select *에서 t_blog에서 id = #{id} </select> < "selectCommentsByblog"a SelectMap = "selectMap =" "selectResult" = #{blogid} </select>위의 요청의 입력은 ID SelectBlog가있는 선택 맵이며, 반환 결과는 ID Blogresult가있는 resultMAP입니다. ID Blogresult 유형은 블로그이며 ID의 속성과 필드를 지정합니다. ID를 지정하면 MyBatis의 건설에 큰 영향을 미칩니다. 주석 개체와 관련이 있습니다. 블로그에는 컬렉션 인 많은 댓글이있을 수 있으므로 컬렉션 컬렉션과 매핑됩니다. SELECT는 여전히 해당 주석을 쿼리하기 위해 수행되는 하위 쿼리를 나타냅니다. 열은 위에서 발견 된 필드 값이 매개 변수로 서브 쿼리로 전달되는 것을 의미합니다. Oftype는 또한 리턴 유형을 나타냅니다. 여기의 리턴 유형은 컬렉션 내부의 유형입니다. 유형 대신 유형이 사용되는 이유는 Mybatis 내에서 협회 협회와 구별하기 위해 사용되기 때문입니다.
public void selectCommentsByBlogTest () {sqlsession session = util.getSqlSessionFactory (); OpenSession (); commbermapper commplaper = session.getMapper (CommentMapper.Class); list <comment> 주석 = commentmapper.selectCommentsByBlog (6); insect.out.println (session.ounc.); TestSelectone () {sqlsession session = util.getSqlSessionFactory (). OpenSession (); blogmapper blogmapper = session.getMapper (blogmapper.class); blogmapper.class); list> 주석> 주석 = blog.getComments (); if (comment! = null) {for : for : for : for : for : for : list> henst> 주석> list <comment> comment> 주석) System.out.println (comment);} session.close ();}위는 MyBatis의 resultType 및 resultMap입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!