Java 学习【框架篇(二)】MyBatis(一)第一个 MyBatis 查询程序

1. 学习准备


2021/11/29

1.1 思维导图

在这里插入图片描述

环境:

回顾:

  • 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 新建项目

  1. 新建普通的 Maven 项目
    检查 Maven 位置,有时候用着用着位置就跑 C 盘去了 在这里插入图片描述

  2. 删除 src目录

  3. 导入依赖
    在这里插入图片描述
    在这里插入图片描述

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 修改配置(环境准备)(第二步)

  1. 修改驱动
    在这里插入图片描述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 小结

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

猜你喜欢

转载自blog.csdn.net/weixin_46644403/article/details/121606875