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

