{"id":4105,"date":"2024-03-13T07:57:05","date_gmt":"2024-03-13T07:57:05","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/"},"modified":"2025-07-31T01:40:45","modified_gmt":"2025-07-31T01:40:45","slug":"how-to-implement-one-to-many-mapping-relationships-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/","title":{"rendered":"MyBatis One-to-Many Mapping Guide"},"content":{"rendered":"<p>In MyBatis, to implement a one-to-many mapping relationship, it is typically achieved through either nested queries or nested result sets. Here are two common methods:<\/p>\n<ol>\n<li>Using nested queries:<br \/>\nIn the mapping file, you can use nested queries to retrieve the parent object and its corresponding multiple child objects. For example, you can nest the SQL query for the parent object with the SQL query for the child objects, and associate the parent object with the child objects through nested queries.<\/li>\n<\/ol>\n<p>Original: \u6211\u4eec\u9700\u8981\u8d76\u5feb\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002<br \/>\nParaphrased: We need to quickly address this issue.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">select<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"selectParent\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"Parent\"<\/span>&gt;<\/span>\r\n    SELECT * FROM parent\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">select<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"selectChildren\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"Child\"<\/span>&gt;<\/span>\r\n    SELECT * FROM child WHERE parent_id = #{parentId}\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Using nested result sets:<br \/>\nNested result sets can be used in mapping files to achieve a one-to-many mapping relationship. By defining the mapping relationship between the parent and child objects, and then querying the parent object by nesting the results, the parent object can be mapped with its corresponding multiple child objects.<\/li>\n<\/ol>\n<p>&#8220;\u6211\u9700\u8981\u53bb\u8d2d\u7269\uff0c\u56e0\u4e3a\u6211\u9700\u8981\u4e70\u4e00\u4e9b\u8863\u670d\u3002&#8221;<br \/>\nI have to go shopping because I need to buy some clothes.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">resultMap<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"parentMap\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"Parent\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">id<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"id\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"id\"<\/span> \/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">result<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"name\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"name\"<\/span> \/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">collection<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"children\"<\/span> <span class=\"hljs-attr\">ofType<\/span>=<span class=\"hljs-string\">\"Child\"<\/span> <span class=\"hljs-attr\">resultMap<\/span>=<span class=\"hljs-string\">\"childMap\"<\/span> \/&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">resultMap<\/span>&gt;<\/span>\r\n\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">resultMap<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"childMap\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"Child\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">id<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"id\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"id\"<\/span> \/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">result<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"name\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"name\"<\/span> \/&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">resultMap<\/span>&gt;<\/span>\r\n\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">select<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"selectParent\"<\/span> <span class=\"hljs-attr\">resultMap<\/span>=<span class=\"hljs-string\">\"parentMap\"<\/span>&gt;<\/span>\r\n    SELECT p.*, c.* FROM parent p\r\n    LEFT JOIN child c ON p.id = c.parent_id\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>Developers can choose the appropriate method to implement a one-to-many mapping relationship based on specific business needs using the two methods mentioned above.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MyBatis, to implement a one-to-many mapping relationship, it is typically achieved through either nested queries or nested result sets. Here are two common methods: Using nested queries: In the mapping file, you can use nested queries to retrieve the parent object and its corresponding multiple child objects. For example, you can nest the SQL [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[3317,1459,3315,3314,3316],"class_list":["post-4105","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-database-relationships","tag-mybatis","tag-nested-queries","tag-one-to-many-mapping","tag-result-sets"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MyBatis One-to-Many Mapping Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis One-to-Many Mapping Guide\" \/>\n<meta property=\"og:description\" content=\"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-13T07:57:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T01:40:45+00:00\" \/>\n<meta name=\"author\" content=\"Emily Johnson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emily Johnson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\"},\"author\":{\"name\":\"Emily Johnson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\"},\"headline\":\"MyBatis One-to-Many Mapping Guide\",\"datePublished\":\"2024-03-13T07:57:05+00:00\",\"dateModified\":\"2025-07-31T01:40:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\"},\"wordCount\":180,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"database relationships\",\"MyBatis\",\"nested queries\",\"one-to-many mapping\",\"result sets\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\",\"name\":\"MyBatis One-to-Many Mapping Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-13T07:57:05+00:00\",\"dateModified\":\"2025-07-31T01:40:45+00:00\",\"description\":\"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis One-to-Many Mapping Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\",\"name\":\"Emily Johnson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"caption\":\"Emily Johnson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MyBatis One-to-Many Mapping Guide - Blog - Silicon Cloud","description":"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis One-to-Many Mapping Guide","og_description":"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-13T07:57:05+00:00","article_modified_time":"2025-07-31T01:40:45+00:00","author":"Emily Johnson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Emily Johnson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/"},"author":{"name":"Emily Johnson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378"},"headline":"MyBatis One-to-Many Mapping Guide","datePublished":"2024-03-13T07:57:05+00:00","dateModified":"2025-07-31T01:40:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/"},"wordCount":180,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["database relationships","MyBatis","nested queries","one-to-many mapping","result sets"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/","name":"MyBatis One-to-Many Mapping Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-13T07:57:05+00:00","dateModified":"2025-07-31T01:40:45+00:00","description":"Implement MyBatis one-to-many relationships using nested queries or result sets. Clear examples for developers.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-one-to-many-mapping-relationships-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis One-to-Many Mapping Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378","name":"Emily Johnson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","caption":"Emily Johnson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=4105"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4105\/revisions"}],"predecessor-version":[{"id":148766,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4105\/revisions\/148766"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=4105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=4105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=4105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}