MyBatis Mapper.xml核心屬性示例詳解
在 MyBatis 的 Mapper.xml
文件中,statement
標簽(如 <select>
、<insert>
等)包含多個關鍵屬性,用于定義 SQL 語句的行為和映射規(guī)則。以下是核心屬性及其含義:
?? 一、基礎屬性
id
- 作用:當前命名空間下 SQL 語句的唯一標識,必須與對應 Mapper 接口的方法名一致。
- 示例:
<select id="getUserById" ...>
對應接口方法User getUserById(int id)
。
parameterType
- 作用:指定輸入?yún)?shù)的類型(如
java.lang.Integer
或 POJO 全限定名),可省略(MyBatis 會自動推斷)。 - 注意:舊版本支持
parameterMap
,但已不推薦使用。
- 作用:指定輸入?yún)?shù)的類型(如
resultType
- 作用:將查詢結果映射為 Java 對象類型(需列名與屬性名一致)。
- 示例:
resultType="com.example.User"
表示結果映射為User
對象。
resultMap
- 作用:通過自定義映射規(guī)則處理復雜結果集(如字段名與屬性名不一致或嵌套對象)。
- 與
resultType
二選一,優(yōu)先使用resultMap
應對復雜場景。
?? 二、高級控制屬性
statementType
- 取值:
STATEMENT
:直接執(zhí)行 SQL,無預編譯(易受 SQL 注入風險)。PREPARED
(默認):預編譯 SQL,參數(shù)占位符為#{}
。CALLABLE
:調用存儲過程。
- 示例:
<select statementType="CALLABLE">
用于執(zhí)行存儲過程。
- 取值:
useGeneratedKeys
- 作用:啟用 JDBC 主鍵回寫(如 MySQL 自增 ID),需配合
keyProperty
指定接收屬性。 - 示例:
<insert useGeneratedKeys="true" keyProperty="id">
。
- 作用:啟用 JDBC 主鍵回寫(如 MySQL 自增 ID),需配合
timeout
- 作用:設置 SQL 執(zhí)行超時時間(單位:秒),超時拋出異常。
fetchSize
- 作用:控制數(shù)據(jù)庫每次返回的最大記錄數(shù)(優(yōu)化大數(shù)據(jù)量查詢性能)。
?? 三、緩存與結果集控制
flushCache
- 作用:執(zhí)行后是否清空一級/二級緩存(默認
false
,查詢不刷新)。
- 作用:執(zhí)行后是否清空一級/二級緩存(默認
resultSetType
- 取值:
FORWARD_ONLY
(默認):單向遍歷結果集。SCROLL_SENSITIVE
:可滾動且敏感(實時反映數(shù)據(jù)庫變化)。SCROLL_INSENSITIVE
:可滾動但不敏感(快照模式)。
- 取值:
useCache
- 作用:是否將結果存入二級緩存(默認
true
)。
- 作用:是否將結果存入二級緩存(默認
?? 四、動態(tài) SQL 相關屬性
databaseId
- 作用:指定數(shù)據(jù)庫廠商(如
mysql
、oracle
),用于多數(shù)據(jù)庫適配。
- 作用:指定數(shù)據(jù)庫廠商(如
lang
- 作用:指定動態(tài) SQL 語言驅動(如自定義腳本語言)。
總結
MyBatis 的 statement
屬性通過靈活配置平衡了 SQL 控制力與開發(fā)效率,核心在于:
- 基礎映射:
id
、resultType
/resultMap
實現(xiàn)對象關系映射。 - 性能優(yōu)化:
timeout
、fetchSize
等提升執(zhí)行效率。 - 安全與擴展:
statementType
和動態(tài) SQL 支持復雜場景。
到此這篇關于MyBatis Mapper.xml核心屬性詳解的文章就介紹到這了,更多相關MyBatis Mapper.xml核心屬性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解spring Boot 集成 Thymeleaf模板引擎實例
本篇文章主要介紹了spring Boot 集成 Thymeleaf模板引擎實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09java中throws與try...catch的區(qū)別點
在本篇文章里小編給大家整理了一篇關于java中throws與try...catch的區(qū)別點的內容,需要的朋友們跟著學習下。2020-02-02navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法
今天小編就為大家分享一篇關于navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12SpringBoot 如何實現(xiàn)自定義Redis序列化
這篇文章主要介紹了SpringBoot 如何實現(xiàn)自定義Redis序列化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10