目录
[1. 📚Mybatis介绍](#1. 📚Mybatis介绍)
[1.1. 🧩框架](#1.1. 🧩框架)
[1.2. 🔗ORM框架](#1.2. 🔗ORM框架)
[1.3. 🚀MyBatis](#1.3. 🚀MyBatis)
[2. 🔧MyBatis 入门](#2. 🔧MyBatis 入门)
[2.1. 🏗️环境搭建](#2.1. 🏗️环境搭建)
[2.1.1. 新建空项目](#2.1.1. 新建空项目)
[2.1.2. 创建Maven工程](#2.1.2. 创建Maven工程)
[2.1.3. 在pom.xml中的 标签中引入依赖](#2.1.3. 在pom.xml中的 标签中引入依赖)
[2.1.4. 创建mybatis核心配置文件SqlMapConfig.xml](#2.1.4. 创建mybatis核心配置文件SqlMapConfig.xml)
[2.1.5. 在resource下创建log4j.properties,让控制台打印SQL语句](#2.1.5. 在resource下创建log4j.properties,让控制台打印SQL语句)
[2.1.6. 根据数据库表创建实体类](#2.1.6. 根据数据库表创建实体类)
[2.2. 🗂️创建持久层接口和映射文件](#2.2. 🗂️创建持久层接口和映射文件)
[2.2.1. 在java目录创建持久层接口](#2.2.1. 在java目录创建持久层接口)
[2.2.2. 在resource目录创建映射文件](#2.2.2. 在resource目录创建映射文件)
[2.2.3. 将映射文件配置到mybatis核心配置文件SqlMapConfig.xml中](#2.2.3. 将映射文件配置到mybatis核心配置文件SqlMapConfig.xml中)
[2.2.4. 编写映射文件的注意事项](#2.2.4. 编写映射文件的注意事项)
[2.2.5. 测试持久层接口方法](#2.2.5. 测试持久层接口方法)
[3. 🔍总结](#3. 🔍总结)
💡【开发哲学共勉】
MyBatis 用半自动化的 ORM 魔法,将数据库表织成对象世界的经纬,让 SQL 操作如调用方法般丝滑,从此告别 JDBC 的繁琐,让开发者在业务海洋中轻装上阵
🎉 前言
在之前操作数据库时,都会用到JDBC,但是像这样写代码,都会有些麻烦,因为要写的代码很多,层次也多
MyBatis的出现,让我们程序员只需要写SQL代码即可操作数据库,让我们的开发效率变得更高效,那现在来一起开启MyBatis的学习之旅吧~ (๑•̀ㅂ•́)و✧
个人主页:艺杯羹 🌿
系列专栏:MyBatis🚀
1. 📚Mybatis介绍
Mybatis是一个ORM框架,现在分别介绍一下
1.1. 🧩框架
框架简单来说,就是一个半成品软件,在实际的开发中,对于那些简单可复用的代码,可以提取出成一个框架,直接使用这个框架就可以了
框架的好处:
- 节约时间
- 可以让程序员更专注于业务层,而非只专注于技术层
1.2. 🔗ORM框架
ORM(Object Relationl Mapping),对象关系映射
也就是用于 数据库 和 类对象 之间的映射
ORM框架就是用来代替之前的JDBC操作的,这样就大大的提高了开发效率
1.3. 🚀MyBatis

MyBatis是一个半自动化的ORM框架,MyBatis是对JDBC的一个封装,使用它,就不用再写JDBC代码了,直接操作SQL语句即可
提到了半自动话,当然还有全自动话
全自动化ORM框架 --- Hibernate
因为它的学习成本高和不灵活导致现在很少有企业使用
2. 🔧MyBatis 入门
2.1. 🏗️环境搭建
这里先按步骤搭建一下环境
2.1.1. 新建空项目

2.1.2. 创建Maven工程
2.1.3. 在pom.xml中的<dependencies>标签中引入依赖

java
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
2.1.4. 创建mybatis核心配置文件SqlMapConfig.xml
这个核心配置文件是放在resources资源包下的

再将以下内容复制到核心配置文件中
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="mysql">
<environment id="mysql">
<!-- 事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
2.1.5. 在resource下创建log4j.properties,让控制台打印SQL语句

将以下内容复制进去
XML
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
#log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{MM/dd HH:mm:ss}] %-6r [%15.15t] %-5p %30.30c %x - %m\n
2.1.6. 根据数据库表创建实体类
这里提供一个数据库表,大家可以自己直接复制过去用,或者是用自己的
sql
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255),
sex VARCHAR(255),
address VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.2. 🗂️创建持久层接口和映射文件
2.2.1. 在java目录创建持久层接口

结构还是要有的,在mapper包下创建
java
public interface UserMapper {
List<User> findAll();
}
2.2.2. 在resource目录创建映射文件

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">
<!--namespace 要和对应的 Mapper 接口的全限定名一致-->
<mapper namespace="com.yibeigen.mapper.UserMapper">
<!-- select 查询 -->
<!--resultType 是返回值类型 -->
<!--id 是方法名 -->
<select id="findAll" resultType="user">
select * from user
</select>
</mapper>
2.2.3. 将映射文件配置到mybatis核心配置文件SqlMapConfig.xml中
XML
<!-- 注册映射文件 -->
<mappers>
<mapper resource="com/yibeigen/mapper/UserMapper.xml"></mapper>
</mappers>
2.2.4. 编写映射文件的注意事项
- 映射文件要和接口名称相同
- 映射文件要和接口的目录结构相同
- 映射文件中的属性
-
namespace 属性写接口全名
-
id 属性是接口的方法名
-
resultType 属性是接口的返回值
-
parameterType 属性是接口方法的参数类型
-
resultType 、parameterType 属性要写全类名
如果是集合类型,就写泛型的全类名
-
2.2.5. 测试持久层接口方法
和Maven的操作一样,在test包下创建测试方法
java
@Test
public void testFindAll() throws Exception {
// (1)读取核心配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
// (2)创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
SqlSessionFactory factory = builder.build(is);
// (4)SqlSessionFactory对象获取SqlSession对象
SqlSession session = factory.openSession();
// (5)SqlSession对象获取代理对象
UserMapper userMapper = session.getMapper(UserMapper.class);
// (6)代理对象执行方法
List<User> all = userMapper.findAll();
all.forEach(System.out::println);
// (7)释放资源
session.close();
is.close();
}

因为我输出是直接输出对象,那么这个输出和你重写的tostring方法有关
这里就先让大家感受一下这个MyBatis大致是如何操作的(๑•̀ㅂ•́)و✧
3. 🔍总结

到此MyBatis的介绍与快速入门就讲到这里
如果觉得还可以的话,帮忙点赞,关注呢,万分感谢(๑•̀ㅂ•́)و✧