{"id":16937,"date":"2024-03-15T13:57:35","date_gmt":"2024-03-15T13:57:35","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/"},"modified":"2025-08-07T07:08:42","modified_gmt":"2025-08-07T07:08:42","slug":"how-can-mybatis-return-a-result-set-from-a-stored-procedure","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/","title":{"rendered":"How can Mybatis return a result set from a stored proce&#8230;"},"content":{"rendered":"<p>There are several ways in which MyBatis can return result sets from stored procedures.<\/p>\n<ol>\n<li>Using OUT Parameters: You can define OUT parameters in a stored procedure and then use #{outParamName, mode=OUT, jdbcType=CURSOR} in the MyBatis Mapper to receive the result set. 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\">\"callProcedure\"<\/span> <span class=\"hljs-attr\">statementType<\/span>=<span class=\"hljs-string\">\"CALLABLE\"<\/span>&gt;<\/span>\r\n  {call get_users(#{outParam, mode=OUT, jdbcType=CURSOR})}\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>In Java code, you can obtain the result set by calling the getConnection() method and process it using the ResultSetHandler.<\/p>\n<ol>\n<li>Using cursor type result sets: Some databases support returning results as a cursor, which can be defined in a stored procedure as a cursor type to return the result set, and then mapped in the MyBatis Mapper using #resultType or #resultMap. 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\">\"callProcedure\"<\/span> <span class=\"hljs-attr\">statementType<\/span>=<span class=\"hljs-string\">\"CALLABLE\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"User\"<\/span>&gt;<\/span>\r\n  {call get_users()}\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>Among them, resultType specifies the mapping type of the result set, which can be a simple Java object or a ResultMap.<\/p>\n<ol>\n<li>Using temporary tables: you can create a temporary table in a stored procedure and insert the result set into that table, then perform query operations on that temporary table in the MyBatis Mapper. For example:<\/li>\n<\/ol>\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\">\"callProcedure\"<\/span> <span class=\"hljs-attr\">statementType<\/span>=<span class=\"hljs-string\">\"CALLABLE\"<\/span>&gt;<\/span>\r\n  {call get_users()}\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">insert<\/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\">\"queryTempTable\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"User\"<\/span>&gt;<\/span>\r\n  SELECT * FROM temp_table\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>In Java code, first call the procedure to invoke the stored procedure, then execute queryTempTable to retrieve the result set.<\/p>\n<p>It is important to note that the specific implementation may vary depending on the database type and version, so it is recommended to refer to the relevant database and MyBatis documentation based on the actual situation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are several ways in which MyBatis can return result sets from stored procedures. Using OUT Parameters: You can define OUT parameters in a stored procedure and then use #{outParamName, mode=OUT, jdbcType=CURSOR} in the MyBatis Mapper to receive the result set. For example: &lt;select id=&#8221;callProcedure&#8221; statementType=&#8221;CALLABLE&#8221;&gt; {call get_users(#{outParam, mode=OUT, jdbcType=CURSOR})} &lt;\/select&gt; In Java code, you [&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":[453,1402,299,1404,1403],"class_list":["post-16937","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"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>How can Mybatis return a result set from a stored proce... - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.\" \/>\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-can-mybatis-return-a-result-set-from-a-stored-procedure\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How can Mybatis return a result set from a stored proce...\" \/>\n<meta property=\"og:description\" content=\"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\" \/>\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-15T13:57:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-07T07:08:42+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-can-mybatis-return-a-result-set-from-a-stored-procedure\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\"},\"author\":{\"name\":\"Jackson Davis\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\"},\"headline\":\"How can Mybatis return a result set from a stored proce&#8230;\",\"datePublished\":\"2024-03-15T13:57:35+00:00\",\"dateModified\":\"2025-08-07T07:08:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\"},\"wordCount\":231,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\",\"name\":\"How can Mybatis return a result set from a stored proce... - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T13:57:35+00:00\",\"dateModified\":\"2025-08-07T07:08:42+00:00\",\"description\":\"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How can Mybatis return a result set from a stored proce&#8230;\"}]},{\"@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":"How can Mybatis return a result set from a stored proce... - Blog - Silicon Cloud","description":"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.","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-can-mybatis-return-a-result-set-from-a-stored-procedure\/","og_locale":"en_US","og_type":"article","og_title":"How can Mybatis return a result set from a stored proce...","og_description":"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T13:57:35+00:00","article_modified_time":"2025-08-07T07:08:42+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-can-mybatis-return-a-result-set-from-a-stored-procedure\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/"},"author":{"name":"Jackson Davis","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350"},"headline":"How can Mybatis return a result set from a stored proce&#8230;","datePublished":"2024-03-15T13:57:35+00:00","dateModified":"2025-08-07T07:08:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/"},"wordCount":231,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/","url":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/","name":"How can Mybatis return a result set from a stored proce... - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T13:57:35+00:00","dateModified":"2025-08-07T07:08:42+00:00","description":"Learn about how can mybatis return a result set from a stored procedure?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-can-mybatis-return-a-result-set-from-a-stored-procedure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How can Mybatis return a result set from a stored proce&#8230;"}]},{"@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\/16937","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=16937"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16937\/revisions"}],"predecessor-version":[{"id":159591,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16937\/revisions\/159591"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=16937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=16937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=16937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}