1. MyBatis 入门:ORM 思想解析
第一次接触 MyBatis 时,我完全被它的 SQL 映射文件搞懵了——这玩意儿跟 JDBC 有什么区别?直到真正理解了 ORM 思想,才发现 MyBatis 的设计哲学就藏在这三个字母里。ORM(Object-Relational Mapping)的本质是解决面向对象编程与关系型数据库之间的阻抗失配问题。
举个实际开发中的例子:当我们需要从用户表查询数据时,传统 JDBC 需要手动处理 ResultSet:
java复制while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
// 更多字段...
}
而 MyBatis 通过 XML 或注解的映射配置,自动完成这种对象关系转换。但要注意的是,MyBatis 属于"半自动化"ORM,与 Hibernate 的全自动映射不同,它把 SQL 的控制权完全交给了开发者。
关键理解:MyBatis 的核心价值不在于完全隐藏 SQL,而是提供优雅的 SQL 与 Java 对象的映射机制。这种设计特别适合需要精细控制 SQL 的场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心配置全解
2.1 配置文件层级结构
一个完整的 MyBatis 配置通常包含三个层级:
- 主配置文件(mybatis-config.xml)
- Mapper 接口(UserMapper.java)
- SQL 映射文件(UserMapper.xml)
我习惯用以下目录结构组织:
code复制src/main/resources
├── mybatis-config.xml
└── com/example/mapper
└── UserMapper.xml
2.2 主配置关键项
主配置文件中这些配置项最容易被忽视但至关重要:
xml复制<settings>
<!-- 下划线转驼峰 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
<!-- 查询超时时间(秒) -->
<setting name="defaultStatementTimeout" value="30"/>
</settings>
2.3 数据源配置陷阱
连接池配置直接影响系统性能。生产环境推荐这样配置 Druid:
xml复制<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mys
