{"id":8400,"date":"2024-03-14T08:04:44","date_gmt":"2024-03-14T08:04:44","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/"},"modified":"2025-08-03T04:21:53","modified_gmt":"2025-08-03T04:21:53","slug":"what-is-the-method-used-for-cursor-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/","title":{"rendered":"MyBatis Cursor Guide for Large Data"},"content":{"rendered":"<p>In MyBatis, you can use a Cursor to handle large data queries in order to reduce memory consumption. Cursors allow you to retrieve query results one by one, instead of loading all results into memory at once. In MyBatis, you can specify the use of a Cursor for data retrieval by setting the fetchType attribute in the select tag, for example:<\/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\">\"selectUsers\"<\/span> <span class=\"hljs-attr\">resultType<\/span>=<span class=\"hljs-string\">\"User\"<\/span> <span class=\"hljs-attr\">fetchType<\/span>=<span class=\"hljs-string\">\"lazyLoading\"<\/span>&gt;<\/span>\r\n    SELECT * FROM users \r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">select<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>In this example, data is queried using the Cursor method by specifying fetchType=&#8221;lazyLoading&#8221;. When calling this query method, MyBatis will return a Cursor object, allowing data to be retrieved one by one from the Cursor object.<\/p>\n<p>Alternatively, you can also utilize the org.apache.ibatis.cursor.Cursor interface to handle Cursor objects, for example:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">try<\/span> (<span class=\"hljs-type\">SqlSession<\/span> <span class=\"hljs-variable\">session<\/span> <span class=\"hljs-operator\">=<\/span> sqlSessionFactory.openSession()) {\r\n    <span class=\"hljs-keyword\">try<\/span> (Cursor&lt;User&gt; cursor = session.selectCursor(<span class=\"hljs-string\">\"selectUsers\"<\/span>)) {\r\n        <span class=\"hljs-keyword\">for<\/span> (User user : cursor) {\r\n            <span class=\"hljs-comment\">\/\/ \u5904\u7406\u67e5\u8be2\u7ed3\u679c<\/span>\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In this example, a Cursor object is obtained using the session.selectCursor method, and the query results can be processed one by one through a for loop. It is important to remember to manually close the Cursor object after processing all the data to release resources.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MyBatis, you can use a Cursor to handle large data queries in order to reduce memory consumption. Cursors allow you to retrieve query results one by one, instead of loading all results into memory at once. In MyBatis, you can specify the use of a Cursor for data retrieval by setting the fetchType attribute [&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":[11268,494,2688,3373,1459],"class_list":["post-8400","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-cursor","tag-database-optimization","tag-java-persistence","tag-large-data-handling","tag-mybatis"],"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 Cursor Guide for Large Data - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.\" \/>\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-used-for-cursor-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis Cursor Guide for Large Data\" \/>\n<meta property=\"og:description\" content=\"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-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:04:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-03T04:21:53+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\/what-is-the-method-used-for-cursor-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"MyBatis Cursor Guide for Large Data\",\"datePublished\":\"2024-03-14T08:04:44+00:00\",\"dateModified\":\"2025-08-03T04:21:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/\"},\"wordCount\":168,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Cursor\",\"database optimization\",\"Java persistence\",\"large data handling\",\"MyBatis\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/\",\"name\":\"MyBatis Cursor Guide for Large Data - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T08:04:44+00:00\",\"dateModified\":\"2025-08-03T04:21:53+00:00\",\"description\":\"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis Cursor Guide for Large Data\"}]},{\"@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 Cursor Guide for Large Data - Blog - Silicon Cloud","description":"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.","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-used-for-cursor-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis Cursor Guide for Large Data","og_description":"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T08:04:44+00:00","article_modified_time":"2025-08-03T04:21:53+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\/what-is-the-method-used-for-cursor-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"MyBatis Cursor Guide for Large Data","datePublished":"2024-03-14T08:04:44+00:00","dateModified":"2025-08-03T04:21:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/"},"wordCount":168,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Cursor","database optimization","Java persistence","large data handling","MyBatis"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/","name":"MyBatis Cursor Guide for Large Data - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T08:04:44+00:00","dateModified":"2025-08-03T04:21:53+00:00","description":"Learn how MyBatis Cursor reduces memory usage for large datasets by fetching results incrementally instead of loading all data at once.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-used-for-cursor-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis Cursor Guide for Large Data"}]},{"@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\/8400","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=8400"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/8400\/revisions"}],"predecessor-version":[{"id":153206,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/8400\/revisions\/153206"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=8400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=8400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=8400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}