MyBatis 批量插入和性能优化

MyBatis 批量插入和性能优化

MyBatis 把 SQL 的控制权交给开发者,这是它的优点也是它的难点。动态 SQL、缓存机制、参数处理都是需要掌握的知识点。本文讲实际项目中的使用经验和优化技巧。

一个 Mapper 示例

public interface UserMapper {
User selectById(@Param("id") Long id);
}

对应 XML:

<select id="selectById" resultType="com.example.User">
select id, username, email
from user
where id = #{id}
</select>

注意这里用的是 #{id},它会走预编译参数。不要把用户输入直接用 ${id} 拼进 SQL。

动态 SQL 的写法

查询条件可选时,可以用 if

<select id="list" resultType="com.example.User">
select id, username, email from user
<where>
<if test="username != null and username != ''">
and username = #{username}
</if>
</where>
</select>

where 标签会自动处理多余的 and,避免拼接错误。

验证方式

打开 SQL 日志,确认最终执行的 SQL 和参数符合预期。复杂查询最好配合 EXPLAIN 看索引是否命中。

核心要点

  1. 动态 SQL 的常用标签:if、where、choose、foreach

  2. 一级缓存和二级缓存的区别及使用场景

  3. 参数处理:#{} 和 ${} 的区别,防止 SQL 注入

  4. 批量操作的优化:使用 foreach 或 ExecutorType.BATCH

总结

MyBatis 是一个灵活的 ORM 框架,掌握它的核心特性可以提升开发效率。在实际项目中,合理使用缓存和批量操作可以显著提升性能。


   转载规则


《MyBatis 批量插入和性能优化》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录