MyBatis Mapper.xml核心属性示例详解

 更新时间:2025年07月09日 09:37:18   作者:代码的余温  
文章详解MyBatis Mapper.xml中statement标签的核心属性,涵盖SQL映射、执行控制、缓存管理及动态SQL,强调灵活配置对开发效率和系统性能的重要性,感兴趣的朋友一起看看吧

在 MyBatis 的 Mapper.xml 文件中,statement 标签(如 <select><insert> 等)包含多个关键属性,用于定义 SQL 语句的行为和映射规则。以下是核心属性及其含义:

🔍 一、基础属性

  1. id

    • 作用:当前命名空间下 SQL 语句的唯一标识,必须与对应 Mapper 接口的方法名一致。
    • 示例<select id="getUserById" ...> 对应接口方法 User getUserById(int id)
  2. parameterType

    • 作用:指定输入参数的类型(如 java.lang.Integer 或 POJO 全限定名),可省略(MyBatis 会自动推断)。
    • 注意:旧版本支持 parameterMap,但已不推荐使用。
  3. resultType

    • 作用:将查询结果映射为 Java 对象类型(需列名与属性名一致)。
    • 示例resultType="com.example.User" 表示结果映射为 User 对象。
  4. resultMap

    • 作用:通过自定义映射规则处理复杂结果集(如字段名与属性名不一致或嵌套对象)。
    • resultType 二选一,优先使用 resultMap 应对复杂场景。

⚙️ 二、高级控制属性

  1. statementType

    • 取值
      • STATEMENT:直接执行 SQL,无预编译(易受 SQL 注入风险)。
      • PREPARED(默认):预编译 SQL,参数占位符为 #{}
      • CALLABLE:调用存储过程。
    • 示例<select statementType="CALLABLE"> 用于执行存储过程。
  2. useGeneratedKeys

    • 作用:启用 JDBC 主键回写(如 MySQL 自增 ID),需配合 keyProperty 指定接收属性。
    • 示例<insert useGeneratedKeys="true" keyProperty="id">
  3. timeout

    • 作用:设置 SQL 执行超时时间(单位:秒),超时抛出异常。
  4. fetchSize

    • 作用:控制数据库每次返回的最大记录数(优化大数据量查询性能)。

🔄 三、缓存与结果集控制

  1. flushCache

    • 作用:执行后是否清空一级/二级缓存(默认 false,查询不刷新)。
  2. resultSetType

    • 取值
      • FORWARD_ONLY(默认):单向遍历结果集。
      • SCROLL_SENSITIVE:可滚动且敏感(实时反映数据库变化)。
      • SCROLL_INSENSITIVE:可滚动但不敏感(快照模式)。
  3. useCache

    • 作用:是否将结果存入二级缓存(默认 true)。

📌 四、动态 SQL 相关属性

  1. databaseId

    • 作用:指定数据库厂商(如 mysqloracle),用于多数据库适配。
  2. lang

    • 作用:指定动态 SQL 语言驱动(如自定义脚本语言)。

总结

MyBatis 的 statement 属性通过灵活配置平衡了 SQL 控制力与开发效率,核心在于:

  • 基础映射idresultType/resultMap 实现对象关系映射。
  • 性能优化timeoutfetchSize 等提升执行效率。
  • 安全与扩展statementType 和动态 SQL 支持复杂场景。

到此这篇关于MyBatis Mapper.xml核心属性详解的文章就介绍到这了,更多相关MyBatis Mapper.xml核心属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解spring Boot 集成 Thymeleaf模板引擎实例

    详解spring Boot 集成 Thymeleaf模板引擎实例

    本篇文章主要介绍了spring Boot 集成 Thymeleaf模板引擎实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Java语言实现扫雷游戏(1)

    Java语言实现扫雷游戏(1)

    这篇文章主要为大家详细介绍了Java语言实现的扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Java图形界面超实用使用教程

    Java图形界面超实用使用教程

    在Java编程中图形界面应用程序是非常常见和重要的一部分,下面这篇文章主要给大家介绍了关于Java图形界面的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • java实现上传图片进行切割的方法

    java实现上传图片进行切割的方法

    这篇文章主要介绍了java实现上传图片进行切割的方法,以完整实例形式分析了Java针对上传图片进行切割的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • java中throws与try...catch的区别点

    java中throws与try...catch的区别点

    在本篇文章里小编给大家整理了一篇关于java中throws与try...catch的区别点的内容,需要的朋友们跟着学习下。
    2020-02-02
  • Java运算符的常见问题与用法小结

    Java运算符的常见问题与用法小结

    这篇文章主要介绍了Java运算符,结合实例形式总结分析了Java各种常见运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等相关功能、原理与使用技巧,需要的朋友可以参考下
    2020-04-04
  • java数据结构和算法之马踏棋盘算法

    java数据结构和算法之马踏棋盘算法

    这篇文章主要为大家详细介绍了java数据结构和算法之马踏棋盘算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法

    navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法

    今天小编就为大家分享一篇关于navicatdesignquery.sql.bak系统找不到指定路径错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • SpringBoot 如何实现自定义Redis序列化

    SpringBoot 如何实现自定义Redis序列化

    这篇文章主要介绍了SpringBoot 如何实现自定义Redis序列化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring中事务几个常见的问题解决

    Spring中事务几个常见的问题解决

    这篇文章主要介绍了Spring中事务几个常见的问题解决,事务这个概念是数据库层面的,Spring只是基于数据库中的事务进行扩展,以及提供了一些能让程序员更新方便操作事务的方式
    2022-08-08

最新评论