【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis系列全解(二):Mybatis简介与环境搭建

潘潘和他的朋友们发布于 今天 08:49

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis 是一套持久层框架,灵活易用,特别流行。

前言

Mybatis系列全解,我们预计准备10+篇文章,让我们了解到 Mybatis 的基本全貌,真正从入门到上手,从上手到精通,本文为首篇,我们开始。

Mybaits系列全解 (持续更新)

  • Mybatis系列全解(一):手写一套持久层框架
  • Mybatis系列全解(二):Mybatis简介与环境搭建
  • Mybatis系列全解(三):Mybatis简单CRUD使用介绍
  • Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
  • Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
  • Mybatis系列全解(六):Mybatis最硬核的API你知道几个?
  • Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
  • Mybatis系列全解(八):Mybatis的动态SQL
  • Mybatis系列全解(九):Mybatis的复杂映射
  • Mybatis系列全解(十):Mybatis注解开发
  • Mybatis系列全解(十一):Mybatis缓存全解
  • Mybatis系列全解(十二):Mybatis插件开发
  • Mybatis系列全解(十三):Mybatis代码生成器
  • Mybatis系列全解(十四):Spring集成Mybatis
  • Mybatis系列全解(十五):SpringBoot集成Mybatis
  • Mybatis系列全解(十六):Mybatis源码剖析

目录

1、Mybatis是什么

2、Mybatis的前世今生

3、Mybatis的优势

4、Mybatis整体架构图

5、环境搭建

6、总结

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis是什么

我们先看一下官网简介,Mybatis 官网:https://mybatis.org/mybatis-3/

大致翻译为:

我目前的理解是,Mybatis 本身抽象了大量的 JDBC 冗余代码,同时基于对象关系映射模型,向外提供了一套灵活易用的 API 和数据库做交互。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis的前世今生

凡事皆有过往,之前我们讲过一篇 JDBC 的介绍与实际应用,并分析对比了 JDBC 与持久层框架的差异,由于 JDBC 需要开发人员编写过多的代码,操作所有对象,既麻烦还特别容易出错,所以在我们实际开发中很少直接使用 JDBC 进行编程,于是 ORM 的登台显得尤为重要,ORM 全称是 Object/Relation Mapping:表示 对象-关系映射 的缩写。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

最初 SUN 公司推出了 Java EE 服务器端组件模型(EJB),不过由于EJB 配置过于复杂,且适应范围小于是很快就被淘汰。后来封装度极高、开发效率极高、全表映射的 ORM 持久层框架Hibernate 出现,成为了当时首选的 Java ORM 模型框架。但是随着互联网的极速发展、复杂业务场景的不断涌现,Hibernate 在许多方面慢慢暴露出了缺点:灵活性不够、无法根据不同条件组装不同SQL、对多表关联和复杂SQL查询支持较差、SQL优化和性能差、全表映射带来的不便等等。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

于是 Mybatis 框架应运而生,弥补了Hibernate的不足,不仅简单易用,而且具有高度灵活、可优化、易维护等特点,成为如今大型互联网项目的首选框架。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis的优势

Mybatis 是一个半自动化的持久层框架,对开发人员来说,核心 sql 还是需要自己进行优化,sql 和 java 编码进行分离,功能边界清晰,一个专注业务,一个专注数据。

蓝色区域是 Mybatis 框架功能支持,红色区域是应用了Mybatis 框架的工程项目实际需要操作的2个步骤:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

当前有很多 Java 实现的持久化框架,而 MyBatis 流行起来有以下原因:

1、它消除了大量的 JDBC 冗余代码

2、它有低的学习曲线

3、它能很好地与传统数据库协同工作

4、它可以接受 SQL 语句

5、它提供了与 Spring 和 Guice 框架的集成支持

6、它提供了与第三方缓存类库的集成支持

7、它引入了更好的性能

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis整体架构图

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

环境搭建

Mybatis 开发与环境搭建,我们先入门体验,步骤如下:

1、创建 maven 工程

2、添加 MyBatis 仓库坐标(非maven项目则引入jar包)

3、创建user数据表

4、编写User实体类

5、编写映射文件UserMapper.xml

6、编写核心文件SqlMapConfig.xml

7、编写测试类

1、创建 maven 工程

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

2、添加 MyBatis 仓库坐标

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.encoding>UTF-8</maven.compiler.encoding>

<java.version>1.8</java.version>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</properties>

<dependencies>

<!--mybatis坐标-->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.5</version>

</dependency>

<!--mysql驱动坐标-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

<scope>runtime</scope>

</dependency>

<!--单元测试坐标-->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependency>

<!--日志坐标-->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.12</version>

</dependency>

</dependencies>

3、创建user数据表

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(50) DEFAULT NULL,

`password` varchar(50) DEFAULT NULL,

`birthday` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

4、编写User实体类

package com.panshenlian.pojo;

/**

* @Author: panshenlian

* @Description: 用户实体

* @Date: Create in 2:08 2020/11/28

*/

public class User {

private int id;

private String username;

private String password;

private String birthday;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getBirthday() {

return birthday;

}

public void setBirthday(String birthday) {

this.birthday = birthday;

}

@Override

public String toString() {

return "User{" +

"id=" + id +

", username='" + username + '\'' +

", password='" + password + '\'' +

", birthday='" + birthday + '\'' +

'}';

}

}

5、编写映射文件UserMapper.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="userMapper">

<select id="findAll" resultType="com.panshenlian.pojo.User">

select * from User

</select>

</mapper>

6、编写核心文件SqlMapConfig.xml

<?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="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="/UserMapper.xml" />

</mappers>

</configuration>

7、编写测试类

package com.panshenlian.service;

import com.panshenlian.pojo.User;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Test;

import java.io.IOException;

import java.io.InputStream;

import java.util.List;

/**

* @Author: panshenlian

* @Description: 体验测试类

* @Date: Create in 2:21 2020/11/28

*/

public class MybatisTest {

@Test

public void testQueryUser01() throws IOException {

//加载核心配置文件

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 获得sqlSession工厂对象

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

//获得sqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 执行sql语句

List<User> userList = sqlSession.selectList("userMapper.findAll");

// 打印结果

for (User user : userList) {

System.out.println(user);

}

// 释放资源

sqlSession.close();

}

}


最终通过 Junit 单元测试,运行结果符合预期:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建


工程结构参考:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

总结

我们通过本文介绍,也动手做了一个入门体验的测试工程,基本对 Mybatis 有了初步认识,同时对比了 JDBC 与 Hibernate ,明晰了 Mybatis 诞生的使命,和与生俱来的优势能力。后续我们会继续深入讲解 ,对于 Mybatis 各个知识脉络进行梳理和解析。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

java架构框架mybatis后端

阅读 27发布于 今天 08:49

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


框架系列全解

有点特别的架构师

avatar

潘潘和他的朋友们

有点特别的架构师

1 声望

0 粉丝

0 条评论

得票时间

avatar

潘潘和他的朋友们

有点特别的架构师

1 声望

0 粉丝

宣传栏

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis 是一套持久层框架,灵活易用,特别流行。

前言

Mybatis系列全解,我们预计准备10+篇文章,让我们了解到 Mybatis 的基本全貌,真正从入门到上手,从上手到精通,本文为首篇,我们开始。

Mybaits系列全解 (持续更新)

  • Mybatis系列全解(一):手写一套持久层框架
  • Mybatis系列全解(二):Mybatis简介与环境搭建
  • Mybatis系列全解(三):Mybatis简单CRUD使用介绍
  • Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
  • Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
  • Mybatis系列全解(六):Mybatis最硬核的API你知道几个?
  • Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
  • Mybatis系列全解(八):Mybatis的动态SQL
  • Mybatis系列全解(九):Mybatis的复杂映射
  • Mybatis系列全解(十):Mybatis注解开发
  • Mybatis系列全解(十一):Mybatis缓存全解
  • Mybatis系列全解(十二):Mybatis插件开发
  • Mybatis系列全解(十三):Mybatis代码生成器
  • Mybatis系列全解(十四):Spring集成Mybatis
  • Mybatis系列全解(十五):SpringBoot集成Mybatis
  • Mybatis系列全解(十六):Mybatis源码剖析

目录

1、Mybatis是什么

2、Mybatis的前世今生

3、Mybatis的优势

4、Mybatis整体架构图

5、环境搭建

6、总结

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis是什么

我们先看一下官网简介,Mybatis 官网:https://mybatis.org/mybatis-3/

大致翻译为:

我目前的理解是,Mybatis 本身抽象了大量的 JDBC 冗余代码,同时基于对象关系映射模型,向外提供了一套灵活易用的 API 和数据库做交互。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis的前世今生

凡事皆有过往,之前我们讲过一篇 JDBC 的介绍与实际应用,并分析对比了 JDBC 与持久层框架的差异,由于 JDBC 需要开发人员编写过多的代码,操作所有对象,既麻烦还特别容易出错,所以在我们实际开发中很少直接使用 JDBC 进行编程,于是 ORM 的登台显得尤为重要,ORM 全称是 Object/Relation Mapping:表示 对象-关系映射 的缩写。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

最初 SUN 公司推出了 Java EE 服务器端组件模型(EJB),不过由于EJB 配置过于复杂,且适应范围小于是很快就被淘汰。后来封装度极高、开发效率极高、全表映射的 ORM 持久层框架Hibernate 出现,成为了当时首选的 Java ORM 模型框架。但是随着互联网的极速发展、复杂业务场景的不断涌现,Hibernate 在许多方面慢慢暴露出了缺点:灵活性不够、无法根据不同条件组装不同SQL、对多表关联和复杂SQL查询支持较差、SQL优化和性能差、全表映射带来的不便等等。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

于是 Mybatis 框架应运而生,弥补了Hibernate的不足,不仅简单易用,而且具有高度灵活、可优化、易维护等特点,成为如今大型互联网项目的首选框架。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis的优势

Mybatis 是一个半自动化的持久层框架,对开发人员来说,核心 sql 还是需要自己进行优化,sql 和 java 编码进行分离,功能边界清晰,一个专注业务,一个专注数据。

蓝色区域是 Mybatis 框架功能支持,红色区域是应用了Mybatis 框架的工程项目实际需要操作的2个步骤:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

当前有很多 Java 实现的持久化框架,而 MyBatis 流行起来有以下原因:

1、它消除了大量的 JDBC 冗余代码

2、它有低的学习曲线

3、它能很好地与传统数据库协同工作

4、它可以接受 SQL 语句

5、它提供了与 Spring 和 Guice 框架的集成支持

6、它提供了与第三方缓存类库的集成支持

7、它引入了更好的性能

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

Mybatis整体架构图

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

环境搭建

Mybatis 开发与环境搭建,我们先入门体验,步骤如下:

1、创建 maven 工程

2、添加 MyBatis 仓库坐标(非maven项目则引入jar包)

3、创建user数据表

4、编写User实体类

5、编写映射文件UserMapper.xml

6、编写核心文件SqlMapConfig.xml

7、编写测试类

1、创建 maven 工程

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

2、添加 MyBatis 仓库坐标

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.encoding>UTF-8</maven.compiler.encoding>

<java.version>1.8</java.version>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</properties>

<dependencies>

<!--mybatis坐标-->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.5</version>

</dependency>

<!--mysql驱动坐标-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

<scope>runtime</scope>

</dependency>

<!--单元测试坐标-->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependency>

<!--日志坐标-->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.12</version>

</dependency>

</dependencies>

3、创建user数据表

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(50) DEFAULT NULL,

`password` varchar(50) DEFAULT NULL,

`birthday` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

4、编写User实体类

package com.panshenlian.pojo;

/**

* @Author: panshenlian

* @Description: 用户实体

* @Date: Create in 2:08 2020/11/28

*/

public class User {

private int id;

private String username;

private String password;

private String birthday;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getBirthday() {

return birthday;

}

public void setBirthday(String birthday) {

this.birthday = birthday;

}

@Override

public String toString() {

return "User{" +

"id=" + id +

", username='" + username + '\'' +

", password='" + password + '\'' +

", birthday='" + birthday + '\'' +

'}';

}

}

5、编写映射文件UserMapper.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="userMapper">

<select id="findAll" resultType="com.panshenlian.pojo.User">

select * from User

</select>

</mapper>

6、编写核心文件SqlMapConfig.xml

<?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="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="/UserMapper.xml" />

</mappers>

</configuration>

7、编写测试类

package com.panshenlian.service;

import com.panshenlian.pojo.User;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Test;

import java.io.IOException;

import java.io.InputStream;

import java.util.List;

/**

* @Author: panshenlian

* @Description: 体验测试类

* @Date: Create in 2:21 2020/11/28

*/

public class MybatisTest {

@Test

public void testQueryUser01() throws IOException {

//加载核心配置文件

InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 获得sqlSession工厂对象

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

//获得sqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 执行sql语句

List<User> userList = sqlSession.selectList("userMapper.findAll");

// 打印结果

for (User user : userList) {

System.out.println(user);

}

// 释放资源

sqlSession.close();

}

}


最终通过 Junit 单元测试,运行结果符合预期:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建


工程结构参考:

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

总结

我们通过本文介绍,也动手做了一个入门体验的测试工程,基本对 Mybatis 有了初步认识,同时对比了 JDBC 与 Hibernate ,明晰了 Mybatis 诞生的使命,和与生俱来的优势能力。后续我们会继续深入讲解 ,对于 Mybatis 各个知识脉络进行梳理和解析。

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

【Java】Mybatis系列全解(二):Mybatis简介与环境搭建

以上是 【Java】Mybatis系列全解(二):Mybatis简介与环境搭建 的全部内容, 来源链接: utcz.com/a/109068.html

回到顶部