1. 前言
MyBatis是一个基于JDBC的半 ORM 持久化框架, 能通过 注解 或者 XML(主流方式) 和 映射原生类型, 接口和 java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
通俗来说,MyBatis 能够通过简单(指不繁琐)的操作实现对数据库的操作
ORM : Object Relational Mapping, 也就是对象关系映射框架, 它指的是够将数据库中的关系模型和 Java 对象建立起一种对应关系。例如数据库中有 Article 这张表,那么一个 Java 对象对应的就是 Article 这张表中的一行数据
而完成一个 MyBatis 的操作只需要以下几个步骤:
- 创建项目
- 导入 MyBatis 的框架支持,而如果我们要连接的是 MySQL,那么还需要一个 MySQL Driver 的支持(本文重在 MySQL)
- 配置想要连接的数据库以及一些其他的配置
- 完成 XML 文件和 Java 接口的编写(一个 Java 接口对应一个 XML 文件)
- 在 XML 文件中编写 SQL 语句并测试
2. 创建项目
首先是项目的创建,打开 IDEA 新建项目,然后按照如下步骤操作
(如果无法创建 Spring Boot 项目则可以在 IDEA 安装 Spring Boot Helper 插件)
然后再按如下操作, (如果这里没有添加依赖, 后面仍然可以添加)
到此为止, 一个项目就算创建完了, 然后在刚开始目录结构可能有点复杂, 我们可以删除 4 个没用的文件, 如下
3. 添加框架支持
如果创建项目之前已经添加了依赖,这一步就可以直接忽略。但是建议大家装一个 EditStarters 插件,后续导入依赖很方便。
在项目自带的 pom.xml 文件中右键 → generate → EditStarters
然后勾选以下这几项,然后等待下载即可
4. 建库
在练习 MyBatis 之前,需要本地建个数据库和建表
想练习的也可以复制下面这段一样的建库代码,这里创建了文章表和作者表(复制粘贴到 MySQL 即可)
-- 创建数据库
drop database if exists practice;
create database practice DEFAULT CHARACTER SET utf8mb4;
-- 使用数据数据
use practice;
-- 创建用户表
drop table if exists user;
create table user(
id int primary key auto_increment,
username varchar(100) not null,
password varchar(32) not null,
createtime datetime default now(),
updatetime datetime default now()
) default charset 'utf8mb4';
-- 创建文章表
drop table if exists article;
create table article(
id int primary key auto_increment,
title varchar(100) not null,
content text not null,
createtime datetime default now(),
updatetime datetime default now(),
userid int not null, -- 用户 id
visitcount int not null default 1 -- 该文章访问次数
)default charset 'utf8mb4';
-- 随便添加一个作者数据
insert into user(`id`, `username`, `password`, `createtime`, `updatetime`) values
(1, 'pig', 'pig', '2022-12-14 00:00:00', '2022-12-14 00:00:00');
-- 随便添加一个文章数据
insert into article(title,content,userid)
values('MyBatis博客','MyBatis增删查改',1);
表结构如下
5. 配置数据库连接信息和 XML 文件路径
首先在 resources 目录底下创建一个 applictaion.yml 文件,然后在全局配置文件 application.yml 中(也是可以是 properties 文件,但是代码略有差异,效果一样,本文演示的是 yml 文件), 加入下面这一段代码。
⭐在 MyBatis 中,需要去定义 SQL 映射语句,一个MyBatis 的 xml 文件保存的是操作数据库的 sql 语句,而一个 xml 文件会实现一个Java接口中相应的操作数据库的方法,但是我们还需要让 MyBatis 知道这些 xml 文件在哪里,所以这里还需要配置 xml 的文件路径。
spring:
datasource:
# 配置本地连接的数据库(此处我的数据库名字是 practice)
url: jdbc:mysql://127.0.0.1/practice?characterEncoding=utf8
username: root
password: 123456 # 自己数据库的密码
driver-class-name: com.mysql.cj.jdbc.Driver # 固定写法
mybatis:
# 配置 xml 文件路径,此处表示配置在 当前目录的 mapper 包中
mapper-locations: classpath:mapper/**Mapper.xml 的 xml 文件都是
上面代码中的 mapper-locations 的作用就是配置 xml 的文件路径,表示:当前目录下有个 mapper 包,并且包中以 xxMapper.xml 形式命名的文件都是和接口对应的 xml 文件
5.1 创建 Java 类
前面说到 MyBatis 是一个半 ORM 框架,需要将数据库中的数据模型和 Java 对象对应起来,所以还需要创建和数据库中的表对应的 Java 类。
而我们数据库中有 user 和 article 两张表,表中的一条数据就会对应一个 Java 对象,所以,分别创建 Article 类和 User 类(路径不限)。这里我们先拿 Article 举例子,这个表不涉及「字段名和属性名不相等」的问题。后面再拿 User 举重映射的例子
@Data // 这个注解就是给该类加上 toString, get, set 等方法
public class Article {
private int id;
private String title;
private String content;
private Date createtime;
private Date updatetime;
private int userid;
private int visitcount;
}
(该 Article 类属性名和数据库字段名相等)
5.2 Java 接口
在 MyBatis 中,一个 xml 文件和一个 接口是对应的,对于一个类,就会有一个接口和实现相关操作的 xml 文件
⭐但是这个接口不只是普通的接口,还需要加上 @Mapper 注解来修饰,这个注解会对这个接口生成一个实现类,会将其类实例化成 Bean 对象存入 Spring 中进行管理。
我们开始编写这个 接口 (接口命名无要求)
@Mapper
public interface ArticleMapper {
}
5.3 XML 文件
然后就是创建 xml 文件,由于在前面我们配置了 xml 文件的路径,如下
因此我们的 xml 不仅需要放在同一级目录中的 mapper 包中,还需要以 __Mapper.xml 的形式命名 xml 文件,这里我们就取名 ArticleMapper.xml
⭐然后在 MyBatis 中的 xml 文件中,还要加入一段固定的代码块
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)