MyBatis(常写作MyBatis,不是 mybatis)里常说的“关键字”,一般包含SQL 关键字、MyBatis XML 标签(动态 SQL)、映射配置关键字三类。下面给你一份常用速查清单,适合面试 + 日常开发。
一、MyBatis XML 常用标签(最重要)
| 标签 | 作用 |
|---|
<select> | 查询 SQL |
<insert> | 插入 SQL |
<update> | 更新 SQL |
<delete> | 删除 SQL |
<resultMap> | 结果集映射 |
<parameterMap> | 参数映射(已不推荐) |
<sql> | 定义可复用 SQL 片段 |
<include> | 引入 SQL 片段 |
<cache> | 二级缓存配置 |
<cache-ref> | 引用其他 namespace 的缓存 |
二、动态 SQL 关键字(高频考点)
| 标签 | 说明 |
|---|
<if> | 条件判断 |
<choose>/<when>/<otherwise> | 类似 switch-case |
<trim> | 去多余逗号/AND/OR |
<where> | 自动处理 WHERE |
<set> | 自动处理 SET |
<foreach> | 遍历集合(IN、批量) |
<bind> | 绑定变量(常用于模糊查询) |
✅ 示例(<where>+<if>):
<selectid="selectUser">SELECT * FROM user<where><iftest="name != null">AND name = #{name}</if></where></select>
三、SQL 中 MyBatis 常用关键字(结合 JDBC)
| 关键字 | 说明 |
|---|
#{} | 预编译参数(防 SQL 注入 ✅) |
${} | 字符串拼接(有注入风险 ⚠️) |
resultType | 返回类型 |
resultMap | 自定义结果映射 |
parameterType | 参数类型 |
useGeneratedKeys | 获取自增主键 |
keyProperty | 主键字段 |
keyColumn | 数据库主键列 |
flushCache | 是否刷新缓存 |
useCache | 是否使用二级缓存 |
timeout | SQL 超时时间 |
fetchSize | JDBC fetchSize |
四、Mapper 接口相关关键字(注解)
| 注解 | 说明 |
|---|
@Select | 查询 |
@Insert | 插入 |
@Update | 更新 |
@Delete | 删除 |
@Param | 给参数命名 |
@Result | 字段映射 |
@Results | 多个 Result |
@One | 一对一 |
@Many | 一对多 |
五、关联映射关键字(ResultMap)
| 标签 | 说明 |
|---|
<id> | 主键 |
<result> | 普通字段 |
<association> | 一对一 |
<collection> | 一对多 |
columnPrefix | 列前缀 |
lazyLoadingEnabled | 延迟加载 |
aggressiveLazyLoading | 侵入式懒加载 |
六、MyBatis 核心配置(mybatis-config.xml)
| 配置项 | 说明 |
|---|
<configuration> | 根标签 |
<environments> | 环境配置 |
<environment> | 单个环境 |
<transactionManager> | 事务管理器 |
<dataSource> | 数据源 |
<mappers> | Mapper 扫描 |
<typeAliases> | 别名 |
<plugins> | 插件(分页、拦截器) |
七、常见面试一句话总结 ✅
MyBatis 常用关键字 = SQL 关键字 + 动态 SQL 标签 + #{} / ${} + resultMap + 缓存配置