MyBatis Mapper.xml核心属性示例详解
在 MyBatis 的 Mapper.xml 文件中,statement 标签(如 <select>、<insert> 等)包含多个关键属性,用于定义 SQL 语句的行为和映射规则。以下是核心属性及其含义:
🔍 一、基础属性
id- 作用:当前命名空间下 SQL 语句的唯一标识,必须与对应 Mapper 接口的方法名一致。
- 示例:
<select id="getUserById" ...>对应接口方法User getUserById(int id)。
parameterType- 作用:指定输入参数的类型(如
java.lang.Integer或 POJO 全限定名),可省略(MyBatis 会自动推断)。 - 注意:旧版本支持
parameterMap,但已不推荐使用。
- 作用:指定输入参数的类型(如
resultType- 作用:将查询结果映射为 Java 对象类型(需列名与属性名一致)。
- 示例:
resultType="com.example.User"表示结果映射为User对象。
resultMap- 作用:通过自定义映射规则处理复杂结果集(如字段名与属性名不一致或嵌套对象)。
- 与
resultType二选一,优先使用resultMap应对复杂场景。
⚙️ 二、高级控制属性
statementType- 取值:
STATEMENT:直接执行 SQL,无预编译(易受 SQL 注入风险)。PREPARED(默认):预编译 SQL,参数占位符为#{}。CALLABLE:调用存储过程。
- 示例:
<select statementType="CALLABLE">用于执行存储过程。
- 取值:
useGeneratedKeys- 作用:启用 JDBC 主键回写(如 MySQL 自增 ID),需配合
keyProperty指定接收属性。 - 示例:
<insert useGeneratedKeys="true" keyProperty="id">。
- 作用:启用 JDBC 主键回写(如 MySQL 自增 ID),需配合
timeout- 作用:设置 SQL 执行超时时间(单位:秒),超时抛出异常。
fetchSize- 作用:控制数据库每次返回的最大记录数(优化大数据量查询性能)。
🔄 三、缓存与结果集控制
flushCache- 作用:执行后是否清空一级/二级缓存(默认
false,查询不刷新)。
- 作用:执行后是否清空一级/二级缓存(默认
resultSetType- 取值:
FORWARD_ONLY(默认):单向遍历结果集。SCROLL_SENSITIVE:可滚动且敏感(实时反映数据库变化)。SCROLL_INSENSITIVE:可滚动但不敏感(快照模式)。
- 取值:
useCache- 作用:是否将结果存入二级缓存(默认
true)。
- 作用:是否将结果存入二级缓存(默认
📌 四、动态 SQL 相关属性
databaseId- 作用:指定数据库厂商(如
mysql、oracle),用于多数据库适配。
- 作用:指定数据库厂商(如
lang- 作用:指定动态 SQL 语言驱动(如自定义脚本语言)。
总结
MyBatis 的 statement 属性通过灵活配置平衡了 SQL 控制力与开发效率,核心在于:
- 基础映射:
id、resultType/resultMap实现对象关系映射。 - 性能优化:
timeout、fetchSize等提升执行效率。 - 安全与扩展:
statementType和动态 SQL 支持复杂场景。
到此这篇关于MyBatis Mapper.xml核心属性详解的文章就介绍到这了,更多相关MyBatis Mapper.xml核心属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解spring Boot 集成 Thymeleaf模板引擎实例
本篇文章主要介绍了spring Boot 集成 Thymeleaf模板引擎实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-09-09
navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法
今天小编就为大家分享一篇关于navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12


最新评论