{"id":8531,"date":"2024-03-14T08:15:51","date_gmt":"2024-03-14T08:15:51","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/"},"modified":"2025-08-03T06:12:38","modified_gmt":"2025-08-03T06:12:38","slug":"how-to-implement-dynamic-table-names-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/","title":{"rendered":"MyBatis Dynamic Table Names: Complete Guide"},"content":{"rendered":"<p>One way to achieve dynamic table names in MyBatis is by using the functionality of MyBatis dynamic SQL.<\/p>\n<ol>\n<li>To begin with, define a parameter for a dynamic table name in the MyBatis Mapper file, for example:<\/li>\n<\/ol>\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\">\"selectById\"<\/span> <span class=\"hljs-attr\">parameterType<\/span>=<span class=\"hljs-string\">\"java.lang.Long\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"com.example.User\"<\/span>&gt;<\/span>\r\n    SELECT * FROM ${tableName} WHERE id = #{id}\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>In Java code, pass a dynamic table name parameter by calling the MyBatis interface method.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> User <span class=\"hljs-title function_\">getUserById<\/span><span class=\"hljs-params\">(Long id, String tableName)<\/span> {\r\n    Map&lt;String, Object&gt; params = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">HashMap<\/span>&lt;&gt;();\r\n    params.put(<span class=\"hljs-string\">\"id\"<\/span>, id);\r\n    params.put(<span class=\"hljs-string\">\"tableName\"<\/span>, tableName);\r\n    <span class=\"hljs-keyword\">return<\/span> userMapper.selectById(params);\r\n}\r\n<\/code><\/pre>\n<p>By using the above method, the functionality of dynamically passing in table names in MyBatis can be achieved. It is important to be cautious when dynamically passing in table names to prevent SQL injection attacks. Security can be ensured by validating or filtering the tableName.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One way to achieve dynamic table names in MyBatis is by using the functionality of MyBatis dynamic SQL. To begin with, define a parameter for a dynamic table name in the MyBatis Mapper file, for example: &lt;select id=&#8221;selectById&#8221; parameterType=&#8221;java.lang.Long&#8221; resultType=&#8221;com.example.User&#8221;&gt; SELECT * FROM ${tableName} WHERE id = #{id} &lt;\/select&gt; In Java code, pass a dynamic [&hellip;]<\/p>\n","protected":false},"author":9,"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":[11563,2688,1459,2742,3134],"class_list":["post-8531","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-dynamic-table-names","tag-java-persistence","tag-mybatis","tag-mybatis-tutorial","tag-sql-mapping"],"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 Dynamic Table Names: Complete Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java 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-dynamic-table-names-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis Dynamic Table Names: Complete Guide\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java developers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-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-14T08:15:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-03T06:12:38+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\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=\"Ava Mitchell\" \/>\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-dynamic-table-names-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"MyBatis Dynamic Table Names: Complete Guide\",\"datePublished\":\"2024-03-14T08:15:51+00:00\",\"dateModified\":\"2025-08-03T06:12:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/\"},\"wordCount\":102,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"dynamic table names\",\"Java persistence\",\"MyBatis\",\"MyBatis tutorial\",\"SQL mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/\",\"name\":\"MyBatis Dynamic Table Names: Complete Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T08:15:51+00:00\",\"dateModified\":\"2025-08-03T06:12:38+00:00\",\"description\":\"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java developers.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis Dynamic Table Names: Complete 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\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MyBatis Dynamic Table Names: Complete Guide - Blog - Silicon Cloud","description":"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java 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-dynamic-table-names-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis Dynamic Table Names: Complete Guide","og_description":"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java developers.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T08:15:51+00:00","article_modified_time":"2025-08-03T06:12:38+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"MyBatis Dynamic Table Names: Complete Guide","datePublished":"2024-03-14T08:15:51+00:00","dateModified":"2025-08-03T06:12:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/"},"wordCount":102,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["dynamic table names","Java persistence","MyBatis","MyBatis tutorial","SQL mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/","name":"MyBatis Dynamic Table Names: Complete Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T08:15:51+00:00","dateModified":"2025-08-03T06:12:38+00:00","description":"Learn how to implement dynamic table names in MyBatis using dynamic SQL. Step-by-step tutorial with code examples for Java developers.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-implement-dynamic-table-names-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis Dynamic Table Names: Complete 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\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/8531","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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=8531"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/8531\/revisions"}],"predecessor-version":[{"id":153348,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/8531\/revisions\/153348"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=8531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=8531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=8531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}