在 MyBatis 的 Mapper.xml
文件中,statement
标签(如 、
等)包含多个关键属性,用于定义 SQL 语句的行为和映射规则。以下是核心属性及其含义:
id
对应接口方法 User getUserById(int id)
。parameterType
java.lang.Integer
或 POJO 全限定名),可省略(MyBatis 会自动推断)。parameterMap
,但已不推荐使用。resultType
resultType="com.example.User"
表示结果映射为 User
对象。resultMap
resultType
二选一,优先使用 resultMap
应对复杂场景。statementType
STATEMENT
:直接执行 SQL,无预编译(易受 SQL 注入风险)。PREPARED
(默认):预编译 SQL,参数占位符为 #{}
。CALLABLE
:调用存储过程。
用于执行存储过程。useGeneratedKeys
keyProperty
指定接收属性。
。timeout
fetchSize
flushCache
false
,查询不刷新)。resultSetType
FORWARD_ONLY
(默认):单向遍历结果集。SCROLL_SENSITIVE
:可滚动且敏感(实时反映数据库变化)。SCROLL_INSENSITIVE
:可滚动但不敏感(快照模式)。useCache
true
)。databaseId
mysql
、oracle
),用于多数据库适配。lang
MyBatis 的 statement
属性通过灵活配置平衡了 SQL 控制力与开发效率,核心在于:
id
、resultType
/resultMap
实现对象关系映射。timeout
、fetchSize
等提升执行效率。statementType
和动态 SQL 支持复杂场景。