1. 学习准备
2021/11/29
1.1 思维导图
环境:
- JDK1.8 配置教程
- MySQL 5.7
- Maven 3.6.0 - 3.6.1
- IDEA
回顾:
- JDBC
- MySQL
- Java 基础
- Maven
- Junit
SSM 框架: 都是有配置文件的,最好的学习方式就是看官网文档(详细)
MyBatis 官方文档
可选择中文
1.2 MyBatis 简介
- MyBatis 是一款优秀的持久层框架
- 它支持自定义 SQL、存储过程以及高级映射。
- MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
- MyBatis 本是 apache 的一个开源项目 iBatis, 2010年这个项目由apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013年11月迁移到 Github。
1.3 如何获得 MyBatis
-
Maven 仓库
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.2<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency>
-
Github
1.4 持久层
数据持久化
- 持久化就是将是程序的数据在持久状态和瞬时转化的过程
- 内存:断电即失
- 数据库(JDBC), io 文件持久化
为什么需要持久化:
- 有一些对象不能让他丢掉
- 内存太贵了
1.5 持久层
DAO 层, Service 层, Controller 层…
- 完成持久化工作的代码块
- 层界限十分明显
1.6 为什么需要 MyBatis
- 帮助程序猿将数据存入到数据库中
- 传统的 JDBC 代码太复杂了。 简化。 框架 - > 自动化
- 优点
- 简单易学
- 灵活
- SQL 和代码的分离,提高了可维护性
- 提供映射标签,支持对象与数据库的 ORM 字段关系映射
- 提供对象关系映射标签,支持对象关系组维护
- 提供 XML 标签,支持编写动态 SQL
2. 第一个 MyBatis 查询程序
思路:搭建环境 --> 导入 MyBatis --> 编写代码 --> 测试
2.1 搭建环境
2.1.1 搭建数据库
2.1.2 新建项目
-
新建普通的 Maven 项目
检查 Maven 位置,有时候用着用着位置就跑 C 盘去了 -
删除
src
目录 -
导入依赖
2.2 创建一个模块
选择 Maven 项目
这样做的好处就是不用重新导包了
此子项目的父项目就是 Mybatis-Study
此时父项目里多了一个子模块
2.2.2 编写 MyBatis 的核心配置文件
官方文档
连接数据库
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
----------------------------此处有坑-----------------------
</configuration>
2.2.2.2 修改配置(环境准备)(第二步)
- 修改驱动
2. 修改 url
连接数据库
密码:123456
3. 用户名 密码
最终结果如下:
2.2.3 编写 MyBatis 工具类 (第一步)
作用:加载资源,创建一个能创建 SQL 的对象
官方文档说明
工厂模式, 建造者模式
把以上读取 XML 文件的程序封装成一个工具类
工厂模式
优化代码
2.3 编写代码
- 实体类(数据库相关要有实体类)
- 操作实体类的实现类
- DAO 接口
- 接口实现类(JDBC 中需要,MyBatis 中不需接口实现类)
2.3.1 新建 POJO 类(第三步)
然后看着数据库的操作把实体类建上
2.3.2 Mapper 接口(第四步)
2.3.3 配置 XML (代替接口实现类)(第五步)
XML 文件的一些使用技巧
原来用 JDBC 实现接口时的写法 -> 对比看 MyBatis 是怎么通过 XML 文件代替的
最终形式
2.4 测试(第六步)
- junit 测试
一个快捷导测试类的方法:
DAO 接口里面右键,选择go to
, 再点test
, 然后creat new test
测试规范
方式一:官方推荐
方式二 (了解,不推荐)
对应官网
注意点
报错 1:
MapperRegistry 是什么?
核心配置文件中注册 mappers
解决方案:
报错2:
解决方案:
所有的 Maven 项目以后首先配上这个
主工程里先放一份(但是不一定会生效)
保险起见:子项目里也放一份
再次运行即生成 xml 文件
同时 生成结果
清理一下 Maven
2.5 小结
根据官方建议 可做以下优化,但是一般不这么用(因为不会产生异常,为什么要捕获呢?)