其他分享
首页 > 其他分享> > 五分钟了解什么是Mybatis(超详细)

五分钟了解什么是Mybatis(超详细)

作者:互联网

MyBatis框架是什么?

MyBatis 框架:

MyBatis 本是apache 的一个开源项目 iBatis, 2010 年这个项目由apache software foundation 迁移到了google code,并且改名为 MyBatis 。2013 年 11 月迁移到Github。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

通过本视频的学习,可以在最短的时间内学会使用持久层框架MyBatis,在该视频中没有废话,都是干货,该视频的讲解不是学术性研究,项目中用什么,这里就讲什么,如果您现在项目中马上要使用MyBatis框架,那么您只需要学习完,就可以顺利的使用MyBatis开发了。

在线观看:2020最新MyBatis教程【IDEA版】-MyBatis从入门到精通_哔哩哔哩_bilibili

资料下载:Mybatis视频教程全套免费下载【适合零基础入门学习】 - 动力节点 (bjpowernode.com)

MyBatis解决的主要问题

减轻使用JDBC 的复杂性,不用编写重复的创建Connetion , Statement ; 不用编写关闭资源代码。

直接使用java 对象,表示结果数据。让开发者专注 SQL 的处理。 其他分心的工作由MyBatis 代劳。

MyBatis 可以完成:

1. 注册数据库的驱动,例如Class.forName(“com.mysql.jdbc.Driver”))

2. 创建JDBC 中必须使用的 Connection , Statement, ResultSet 对象

3. 从xml 中获取sql,并执行sql 语句,把ResultSet 结果转换java 对象

List<Student> list = new ArrayLsit<>();

ResultSet rs = state.executeQuery(“select * from student”);

while(rs.next){

Student student = new Student();

student.setName(rs.getString(“name”));

student.setAge(rs.getInt(“age”));

list.add(student);

}

4. 关闭资源

ResultSet.close() , Statement.close() , Conenection.close()

入门案例

使用Mybatis 准备

下载 mybatis
https://github.com/mybatis/mybatis-3/releases

搭建MyBatis 开发环境

(1) 创建 mysql 数据库和表

数据库名 ssm ;表名student

一个实战案例带你快速入门MyBatis框架
CREATE TABLE `student` (

`id` int(11) NOT NULL ,

`name` varchar(255) DEFAULT NULL,

`email` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2) 创建 maven 工程

创建maven 工程,信息如下:

模板:

一个实战案例带你快速入门MyBatis框架

工程坐标:

一个实战案例带你快速入门MyBatis框架

(3) 删除默认创建的 App 类文件

一个实战案例带你快速入门MyBatis框架

(4) 加入 maven 坐标

pom.xml 加入maven 坐标:

一个实战案例带你快速入门MyBatis框架

(5) 加入 maven 插件

一个实战案例带你快速入门MyBatis框架

(6) 编写 Student 实体类

创建包 com.bjpowernode.domain, 包中创建Student 类

一个实战案例带你快速入门MyBatis框架

(7) 编写 Dao 接口 StudentDao

一个实战案例带你快速入门MyBatis框架

(8) 编写 Dao 接口 Mapper 映射文件 StudentDao.xml

要求:

1. 在dao 包中创建文件StudentDao.xml

2. 要StudentDao.xml 文件名称和接口StudentDao 一样,区分大小写的一样。

一个实战案例带你快速入门MyBatis框架

(9) 创建 MyBatis 主配置文件

项目src/main 下创建 resources 目录,设置 resources 目录为 resources root

创建主配置文件:名称为mybatis.xml

说明:主配置文件名称是自定义的,内容如下:

一个实战案例带你快速入门MyBatis框架

支持中文的url

jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8

(10) 创建测试类 MyBatisTest

src/test/java/com/bjpowernode/ 创建MyBatisTest.java 文件

一个实战案例带你快速入门MyBatis框架 一个实战案例带你快速入门MyBatis框架

(11) 配置日志功能

mybatis.xml 文件加入日志配置,可以在控制台输出执行的sql 语句和参数

一个实战案例带你快速入门MyBatis框架

insert 操作

(1) StudentDao 接口中增加方法

int insertStudent(Student student);

(2) StudentDao.xml 加入 sql 语句

一个实战案例带你快速入门MyBatis框架

(3) 增加测试方法

一个实战案例带你快速入门MyBatis框架

MyBatis 对象分析

对象使用

SqlSession , SqlSessionFactory 等

(1) Resources 类

Resources 类,顾名思义就是资源,用于读取资源文件。其有很多方法通过加载并解析资源文件,返回不同类型的IO 流对象。

(2) SqlSessionFactoryBuilder 类

SqlSessionFactory 的创建,需要使用 SqlSessionFactoryBuilder 对象的build()方法。由于 SqlSessionFactoryBuilder 对象在创建完工厂对象后,就完成了其历史使命,即可被销毁。所以,一般会将该 SqlSessionFactoryBuilder 对象创建为一个方法内的局部对象,方法结束,对象销毁。

(3) SqlSessionFactory 接口

SqlSessionFactory 接口对象是一个重量级对象(系统开销大的对象),是线程安全的,所以一个应用只需要一个该对象即可。创建 SqlSession 需要使用SqlSessionFactory 接口的的openSession()方法。

(4) SqlSession 接口

SqlSession 接口对象用于执行持久化操作。一个 SqlSession 对应着一次数据库会话,一次会话以 SqlSession 对象的创建开始,以 SqlSession 对象的关闭结束。

SqlSession 接口对象是线程不安全的,所以每次数据库会话结束前,需要马上调用其 close()方法,将其关闭。再次需要会话,再次创建。 SqlSession 在方法内部创建,使用完毕后关闭。

创建工具类

(1) 创建 MyBatisUtil 类

package com.bjpowernode.common;

一个实战案例带你快速入门MyBatis框架

(2) 使用 MyBatisUtil 类

一个实战案例带你快速入门MyBatis框架

MyBatis 使用传统 Dao 开发方式

使用Dao 的实现类,操作数据库

Dao 开发

(1) 创建 Dao 接口实现类

public class StudentDaoImpl implements StudentDao

(2) 实现接口中 select 方法

一个实战案例带你快速入门MyBatis框架

测试查询操作:

MyBatisTest 类中创建StudentDaoImpl 对象

一个实战案例带你快速入门MyBatis框架

(3) 实现接口中 insert 方法

一个实战案例带你快速入门MyBatis框架

测试insert

一个实战案例带你快速入门MyBatis框架

传统Dao 开发方式的分析

在前面例子中自定义Dao 接口实现类时发现一个问题:Dao 的实现类其实并没有干什么实质性的工作,它仅仅就是通过 SqlSession 的相关 API 定位到映射文件mapper 中相应 id 的 SQL 语句,真正对 DB 进行操作的工作其实是由框架通过mapper 中的 SQL 完成的。

所以,MyBatis 框架就抛开了Dao 的实现类,直接定位到映射文件mapper 中的相应 SQL 语句,对DB 进行操作。这种对Dao 的实现方式称为Mapper 的动态代理方式。

Mapper 动态代理方式无需程序员实现Dao 接口。接口是由 MyBatis 结合映射文件自动生成的动态代理实现的。

标签:对象,创建,Dao,SqlSession,接口,MyBatis,五分钟,详细,Mybatis
来源: https://blog.51cto.com/u_15083739/2908436