MyBatis 批量插入和性能优化
MyBatis 把 SQL 的控制权交给开发者,这是它的优点也是它的难点。动态 SQL、缓存机制、参数处理都是需要掌握的知识点。本文讲实际项目中的使用经验和优化技巧。
一个 Mapper 示例
public interface UserMapper { |
对应 XML:
<select id="selectById" resultType="com.example.User"> |
注意这里用的是 #{id},它会走预编译参数。不要把用户输入直接用 ${id} 拼进 SQL。
动态 SQL 的写法
查询条件可选时,可以用 if:
<select id="list" resultType="com.example.User"> |
where 标签会自动处理多余的 and,避免拼接错误。
验证方式
打开 SQL 日志,确认最终执行的 SQL 和参数符合预期。复杂查询最好配合 EXPLAIN 看索引是否命中。
核心要点
动态 SQL 的常用标签:if、where、choose、foreach
一级缓存和二级缓存的区别及使用场景
参数处理:#{} 和 ${} 的区别,防止 SQL 注入
批量操作的优化:使用 foreach 或 ExecutorType.BATCH
总结
MyBatis 是一个灵活的 ORM 框架,掌握它的核心特性可以提升开发效率。在实际项目中,合理使用缓存和批量操作可以显著提升性能。