Java 学习【框架篇(二)】MyBatis(一)第一个 MyBatis 查询程序
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 小结


根据官方建议 可做以下优化,但是一般不这么用(因为不会产生异常,为什么要捕获呢?)


浙公网安备 33010602011771号