{"id":11256,"date":"2024-03-14T13:41:19","date_gmt":"2024-03-14T13:41:19","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/"},"modified":"2025-08-04T09:29:57","modified_gmt":"2025-08-04T09:29:57","slug":"how-is-the-selectkey-used-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/","title":{"rendered":"MyBatis selectKey: Guide to Primary Keys"},"content":{"rendered":"<p>In MyBatis, selectKey is an element used to generate primary key values and set them in the entity object. It is typically used to generate primary key values when inserting data, and then set the primary key value in the entity object so that it can be used for subsequent operations.<\/p>\n<p>The selectKey element is commonly nested within an insert statement, where the keyProperty attribute is used to specify which entity object property the generated primary key value should be set to. The order attribute is used to specify the order in which the primary key value is generated (BEFORE or AFTER), and the resultType attribute is used to specify the data type of the generated primary key value.<\/p>\n<p>The sample code is shown below:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">insert<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"insertUser\"<\/span> <span class=\"hljs-attr\">parameterType<\/span>=<span class=\"hljs-string\">\"User\"<\/span> <span class=\"hljs-attr\">useGeneratedKeys<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">keyProperty<\/span>=<span class=\"hljs-string\">\"id\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">selectKey<\/span> <span class=\"hljs-attr\">keyProperty<\/span>=<span class=\"hljs-string\">\"id\"<\/span> <span class=\"hljs-attr\">order<\/span>=<span class=\"hljs-string\">\"AFTER\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"int\"<\/span>&gt;<\/span>\r\n        SELECT LAST_INSERT_ID()\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">selectKey<\/span>&gt;<\/span>\r\n    INSERT INTO user (name, age) VALUES (#{name}, #{age})\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">insert<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>In this example, insertUser is an SQL statement for inserting user information. The selectKey element is used to generate a primary key value and set it to the id attribute of the User object. After inserting the data, you can retrieve the generated primary key value using the id attribute of the User object.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MyBatis, selectKey is an element used to generate primary key values and set them in the entity object. It is typically used to generate primary key values when inserting data, and then set the primary key value in the entity object so that it can be used for subsequent operations. The selectKey element is [&hellip;]<\/p>\n","protected":false},"author":10,"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":[14450,2688,1459,14449,9361],"class_list":["post-11256","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-database-keys","tag-java-persistence","tag-mybatis","tag-selectkey","tag-sql-insert"],"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 selectKey: Guide to Primary Keys - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes &amp; auto-increment IDs.\" \/>\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-is-the-selectkey-used-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis selectKey: Guide to Primary Keys\" \/>\n<meta property=\"og:description\" content=\"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes &amp; auto-increment IDs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-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-14T13:41:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T09:29:57+00:00\" \/>\n<meta name=\"author\" content=\"Jackson Davis\" \/>\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=\"Jackson Davis\" \/>\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-is-the-selectkey-used-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/\"},\"author\":{\"name\":\"Jackson Davis\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\"},\"headline\":\"MyBatis selectKey: Guide to Primary Keys\",\"datePublished\":\"2024-03-14T13:41:19+00:00\",\"dateModified\":\"2025-08-04T09:29:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/\"},\"wordCount\":185,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Database Keys\",\"Java persistence\",\"MyBatis\",\"selectKey\",\"SQL insert\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/\",\"name\":\"MyBatis selectKey: Guide to Primary Keys - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T13:41:19+00:00\",\"dateModified\":\"2025-08-04T09:29:57+00:00\",\"description\":\"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes & auto-increment IDs.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis selectKey: Guide to Primary Keys\"}]},{\"@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\/55a10b8b0457c35884c25677889ad350\",\"name\":\"Jackson Davis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"caption\":\"Jackson Davis\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MyBatis selectKey: Guide to Primary Keys - Blog - Silicon Cloud","description":"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes & auto-increment IDs.","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-is-the-selectkey-used-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis selectKey: Guide to Primary Keys","og_description":"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes & auto-increment IDs.","og_url":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T13:41:19+00:00","article_modified_time":"2025-08-04T09:29:57+00:00","author":"Jackson Davis","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Jackson Davis","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/"},"author":{"name":"Jackson Davis","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350"},"headline":"MyBatis selectKey: Guide to Primary Keys","datePublished":"2024-03-14T13:41:19+00:00","dateModified":"2025-08-04T09:29:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/"},"wordCount":185,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Database Keys","Java persistence","MyBatis","selectKey","SQL insert"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/","name":"MyBatis selectKey: Guide to Primary Keys - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T13:41:19+00:00","dateModified":"2025-08-04T09:29:57+00:00","description":"Learn how MyBatis selectKey generates primary keys in inserts. Master keyProperty, order attributes & auto-increment IDs.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-is-the-selectkey-used-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis selectKey: Guide to Primary Keys"}]},{"@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\/55a10b8b0457c35884c25677889ad350","name":"Jackson Davis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","caption":"Jackson Davis"},"url":"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11256","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=11256"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11256\/revisions"}],"predecessor-version":[{"id":155028,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11256\/revisions\/155028"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=11256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=11256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=11256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}