{"id":13382,"date":"2024-03-15T06:58:59","date_gmt":"2024-03-15T06:58:59","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/"},"modified":"2025-08-05T17:24:44","modified_gmt":"2025-08-05T17:24:44","slug":"what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/","title":{"rendered":"MyBatis Plus Multi-Table Joins"},"content":{"rendered":"<p>MyBatis-Plus offers various methods to achieve multiple table joins, which depends on the type of query you want to use and the level of complexity.<\/p>\n<p>Here are some commonly used methods:<\/p>\n<p>1. Use the @Join annotation: Define the relationship of multi-table join by using the @Join annotation in the entity class, and then perform the query using MyBatis-Plus query methods.<\/p>\n<pre class=\"post-pre\"><code class=\"lang-java\">@Data\r\npublic class User {\r\n    @TableId\r\n    private Long id;\r\n    private String name;\r\n    private Long roleId;\r\n\r\n    @Join(column = \"role_id\", type = Join.Type.LEFT)\r\n    private Role role;\r\n}\r\n\r\n@Data\r\npublic class Role {\r\n    @TableId\r\n    private Long id;\r\n    private String roleName;\r\n}\r\n\r\n\/\/ \u67e5\u8be2\u4ee3\u7801\r\nUser user = userMapper.selectById(1L);\r\n<\/code><\/pre>\n<p>2. Using the Wrapper query builder: Utilizing the Wrapper query builder provided by MyBatis-Plus allows for easily combining multiple conditions for multi-table joins.<\/p>\n<pre class=\"post-pre\"><code class=\"lang-java\">QueryWrapper&lt;User&gt; queryWrapper = new QueryWrapper&lt;&gt;();\r\nqueryWrapper.eq(\"user.id\", 1L)\r\n        .leftJoin(\"role\", \"role.id = user.role_id\")\r\n        .select(\"user.*, role.role_name\");\r\n\r\nUser user = userMapper.selectOne(queryWrapper);\r\n<\/code><\/pre>\n<p>Use custom SQL: If the above methods do not meet the requirements, you can use custom SQL to achieve joins across multiple tables.<\/p>\n<pre class=\"post-pre\"><code class=\"lang-java\">@Select(\"SELECT u.*, r.role_name FROM user u LEFT JOIN role r ON u.role_id = r.id WHERE u.id = #{id}\")\r\nUser selectUserWithRoleById(Long id);\r\n<\/code><\/pre>\n<p>Here are some common methods for querying multiple tables. You can choose the appropriate method based on your specific needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MyBatis-Plus offers various methods to achieve multiple table joins, which depends on the type of query you want to use and the level of complexity. Here are some commonly used methods: 1. Use the @Join annotation: Define the relationship of multi-table join by using the @Join annotation in the entity class, and then perform the [&hellip;]<\/p>\n","protected":false},"author":11,"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":[17822,16099,3159,17284,3451],"class_list":["post-13382","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-join-annotation","tag-multi-table-join","tag-mybatis-plus","tag-orm-tutorial","tag-sql-joins"],"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 Plus Multi-Table Joins - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.\" \/>\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\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis Plus Multi-Table Joins\" \/>\n<meta property=\"og:description\" content=\"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\" \/>\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-15T06:58:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-05T17:24:44+00:00\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\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=\"Olivia Parker\" \/>\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\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"MyBatis Plus Multi-Table Joins\",\"datePublished\":\"2024-03-15T06:58:59+00:00\",\"dateModified\":\"2025-08-05T17:24:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\"},\"wordCount\":128,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"@Join annotation\",\"multi-table join\",\"MyBatis-Plus\",\"ORM Tutorial\",\"SQL joins\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\",\"name\":\"MyBatis Plus Multi-Table Joins - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T06:58:59+00:00\",\"dateModified\":\"2025-08-05T17:24:44+00:00\",\"description\":\"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis Plus Multi-Table Joins\"}]},{\"@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\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MyBatis Plus Multi-Table Joins - Blog - Silicon Cloud","description":"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.","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\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis Plus Multi-Table Joins","og_description":"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T06:58:59+00:00","article_modified_time":"2025-08-05T17:24:44+00:00","author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"MyBatis Plus Multi-Table Joins","datePublished":"2024-03-15T06:58:59+00:00","dateModified":"2025-08-05T17:24:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/"},"wordCount":128,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["@Join annotation","multi-table join","MyBatis-Plus","ORM Tutorial","SQL joins"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/","name":"MyBatis Plus Multi-Table Joins - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T06:58:59+00:00","dateModified":"2025-08-05T17:24:44+00:00","description":"Master multi-table joins in MyBatis Plus with practical examples using @Join annotation and dynamic SQL.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-performing-multi-table-joins-in-mybatis-plus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis Plus Multi-Table Joins"}]},{"@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\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/13382","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\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=13382"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/13382\/revisions"}],"predecessor-version":[{"id":157350,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/13382\/revisions\/157350"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=13382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=13382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=13382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}