学习笔记
MyBatis 入门:从 JDBC 到 ORM
2026-08-18 09:00
MyBatisMySQL
对比原生 JDBC 的样板代码、硬编码 SQL 与手写映射,梳理 MyBatis 的核心价值。
MyBatis 入门:从 JDBC 到 ORM
来源:数据库访问框架技术课程 + 大二下学期笔记 · 整理:婉萤
先记住 JDBC 的痛
写过原生的 JDBC 再回头看,它有三个硬伤:
- 连接创建/关闭的样板代码占了一半篇幅
- SQL 硬编码在 Java 字符串里,改一条语句要重新编译
- 结果集到对象的映射全靠手写
rs.getString("name"),字段一多就是灾难
MyBatis 就是来治这三处的。
三件套结构
mybatis-config.xml —— 核心配置:数据源、事务、Mapper 注册:
<environments default="mysql_conn">
<environment id="mysql_conn">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db?serverTimezone=Asia/Shanghai"/>
</dataSource>
</environment>
</environments>
Mapper XML —— SQL 的家,与 DAO 接口一一对应:
<mapper namespace="com.ts.dao.PersonDao">
<select id="findByName" resultType="com.ts.entity.Person">
SELECT * FROM person WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
</mapper>
DAO 接口 —— 只声明方法,实现由框架动态代理生成。
学习路径上的关键节点
- 参数传递:单参数、多参数(@Param)、Map、对象
- 动态 SQL:
<if>/<where>/<foreach>——按条件拼查询不写一堆 if 拼字符串 - 关联映射:一对多(Emp-Classes)、多对一、一对一(Idcard-People),自定义 ResultMap
- 日志:log4j 配置
log4j.logger.com.ts.dao=TRACE,SQL 执行一目了然
踩坑记录
mybatis-config.xml的 URL 里&必须写成&,否则解析报错- Mapper 的 namespace 必须与 DAO 接口全限定名一致,resource 路径用
/不用.
配套练习:MybatisDemo(10+ 组映射、动态 SQL、多表关联)、Snack_TestProject(多表 + 中间表关联)。