目录
MyBatis是什么
怎么学MyBatis
第一个MyBatis查询
MyBatis的定位
创建数据库和表
搭建MyBatis环境
添加MyBatis框架支持
设置MyBatis的配置信息
设置数据库连接的相关信息
配置MyBatis xml的保存路径和xml命名规范
MyBatis模式开发
创建一个实体类
创建MyBatis接口,加注解
创建xml文件
MyBatis是什么
MyBatis是一款优秀的持久层框架,支持自定义SQL,存储过程以及高级映射.MyBatis去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作.MyBatis可以通过简单的XML或者注解来配置和映射原始类型,接口和Java POJO(普通老式Java对象)为数据库中的记录.
一句话总结:MyBatis是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具.
怎么学MyBatis
MyBatis学习要掌握两个部分:
- 配置MyBatis开发环境
- 使用MyBatis模式和语法操作数据库
第一个MyBatis查询
MyBatis的定位
MyBatis也是一个ORM框架,ORM(Object Relational Mapping)即对象关系映射.在面向对象的编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动完成数据与对象的互相转换.
转换过程:1.将输入的数据(即传入的对象) + SQL映射生成原生的SQL.
2.将结果集映射为返回对象,即输出对象.
- 数据库表->类
- 记录->对象
- 字段->对象的属性
一般的ORM框架,会将数据库模型的每张表都映射成一个Java类.也就是说使用MyBatis可以像操作对象一样来操作数据库中的表,可以实现对象和数据库表之间的转换.
创建数据库和表
创建用户表,文章表,视频表,并添加一条默认的数据.
-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;
-- 使用数据数据
use mycnblog;
-- 创建表[用户表]
drop table if exists userinfo;
create table userinfo(
id int primary key auto_increment,
username varchar(100) not null,
password varchar(32) not null,
photo varchar(500) default '',
createtime timestamp default current_timestamp,
updatetime timestamp default current_timestamp,
`state` int default 1
) default charset 'utf8mb4';
-- 创建文章表
drop table if exists articleinfo;
create table articleinfo(
id int primary key auto_increment,
title varchar(100) not null,
content text not null,
createtime timestamp default current_timestamp,
updatetime timestamp default current_timestamp,
uid int not null,
rcount int not null default 1,
`state` int default 1
)default charset 'utf8mb4';
-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(
vid int primary key,
`title` varchar(250),
`url` varchar(1000),
createtime timestamp default current_timestamp,
updatetime timestamp default current_timestamp,
uid int
)default charset 'utf8mb4';
-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);
-- 文章添加测试数据
insert into articleinfo(title,content,uid)
values('Java','Java正文',1);
-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);
搭建MyBatis环境
添加MyBatis框架支持
不仅要添加MyBatis的框架支持,还要添加对应数据库类型的驱动.
注意:我们之前项目搭建好之后,都会启动项目看看项目能否正常启动.但是MyBatis项目创建好之后第一次启动会报错.是因为在配置文件中还没有配置数据库,当前项目不知道要连接哪个数据库,所以会报错.
设置MyBatis的配置信息
设置数据库连接的相关信息
配置MyBatis xml的保存路径和xml命名规范
MyBatis模式开发
MyBatis模式开发由两部分组成:
1.interface:让其他层可以注入使用的接口,其他层就可以调用接口中的方法
2.MyBatis:xml,对interface中的方法进行具体的实现.
Java中是不能使用xml对接口中的方法进行实现,然后提供给其他层调用的.在这里之所以能够这样做,是因为MyBatis框架内部的实现.MyBatis就相当于一个粘合剂,框架会生成一个代理对象,代理对象这个类实现了接口,并且把xml中对接口中方法的实现都融合到代理对象这个类中,所以我们可以直接调用接口中的方法.看似是调用了接口的方法,其实是调用了MyBatis中的代理对象.
创建一个实体类
创建MyBatis接口,加注解
接口就是进行方法声明,方法的具体实现在xml中
创建xml文件
固定格式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
</mapper>
这样一个基本的MyBatis开发模式就实现完成了,为了试验我们的MyBatis是否成功了,我们遵循标准分层,用service调用数据持久层,控制层来调用service层.
启动项目,访问controller
可以看到,返回了正确的结果.
这就是一个基本的MyBatis开发模式的实现.