JavaEE-MyBatis概述第一个程序
文章目录
- MyBatis基本概述
- 什么是框架
- 三层架构&MyBatis位于哪一层
- 关于ORM思想
- 第一个MyBatis程序
- MyBatis中文网
- 添加MySQL和MyBatis相关依赖
- 把打包方式设置为jar
- 配置核心配置文件mybatis-config.xml
- 配置XxxMapper.xml
- 在mybatis-config.xml中配置XxxMapper.xml
- 使用SqlSession对象操作数据库
MyBatis基本概述
什么是框架
- 我们通常在文献中看到的
framework
这种单词我们称之为框架 - Java常用的框架如下
Spring, SpringMVC, MyBatis(SSM), SpringBoot, SpringCloud(微服务相关)
- 框架本质上就是对通用代码的封装, 作为我们Java程序员, 我们不需要特别在意底层的实现原理, 而是面对具体的业务进行业务代码的编写即可(所有的技术最终都要服务于业务)
- 框架通常都以
jar
包的形式存在(包含各种class文件以及配置文件
)
三层架构&MyBatis位于哪一层
关于三层架构的内容(本来应该在JavaWeb那一块进行讲述, 但是放弃了…)
对于我们Java后端来说, 我们在意后端的三个分层即可
- 表现层(UI): 直接和前端交互(
接收前端的ajkx请求, 返回json给前端
) - 业务逻辑层(BLL): 根据表现层的请求获取持久层数据, 然后进行业务处理
- 持久层(DAL): 直接和数据库进行交互, 返还数据给业务逻辑层
显然, 我们的MyBatis框架就位于持久层, MyBatis并不是唯一的持久层框架, 还有好多的持久层框架
- MyBatis
- Spring Data
- Hibernate
- JOOQ
- Guzz
- …
关于ORM思想
我们把这个单词的全程拼写出来
Object(对象) , Relational(关系) , Mapping(映射)
对象(Java中的对象)
关系(关系型数据库)
映射(数据库数据和Java对象的对应关系)
比如我们创建一个学生类和一张学生表
可以发现, 使用ORM思想, 就可以做到Java对象和数据库中的数据是一一对应的…
- MyBatis就是一个ORM框架, 但是是半自动的(SQL还需要自己编写)
第一个MyBatis程序
MyBatis中文网
其实是MyBatis的官方文档, 我们下面是汉化的网址(真正的MyBatis以及移交到github
上了)
MyBatis中文网
我们直接使用maven
进行管理就行了(别自己下包然后创建了)
添加MySQL和MyBatis相关依赖
<!--mysql驱动依赖-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!--mybatis相关依赖, 第一次加载需要从国内的镜像源下载-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
把打包方式设置为jar
在pom.xml
配置文件中设置packaging标签
配置核心配置文件mybatis-config.xml
注意, 这里建议配置到resources目录下
, 这样可以保证加载的时候使用类的根路径下进行加载(在resources目录下的文件都是在类的根路径下
)
<?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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/java113mysql"/>
<property name="username" value="root"/>
<property name="password" value="Aabb1122*"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--在这里添加相关的映射信息-->
</mappers>
</configuration>
注意, 上面的这个文件, 建议一个数据库配置一个这样的文件
配置XxxMapper.xml
这个文件建议一张数据库表配置一个xml文件, 这里面存放的就是我们的关于这张表的SQL语句
我们下面的sql进行了简单的配置(我们有一个汽车信息表), 每一个sql语句都有自己的id, 这就是这条SQL语句的唯一标识符…
<?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="org.mybatis.example.BlogMapper">
<!--这里才是编写sql语句的主场所...-->
<insert id="car01">
insert into car(id, brand, production_date, type, car_name, price)
values (null, '智界', '2025-1-12', 'suv', '尊界08', 89.99);
</insert>
</mapper>
在mybatis-config.xml中配置XxxMapper.xml
往上翻我们的配置mybatis-config.xml中的完整信息, 看到一个mappers标签, 我们把我们的CarMapper.xml
配置到mybatis-config.xml
中, 这样相当于我们的核心配置文件中可以检索到这个mapper映射关系…
<mappers>
<!--在这里添加相关的映射信息-->
<mapper resource="CarMapper.xml"/>
</mappers>
使用SqlSession对象操作数据库
使用SqlSession对象的流程
流程就是这样, 我们简单测试一下
package com.qnn.mybatis01;
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 java.io.IOException;
import java.io.InputStream;
public class Demo2 {
// 测试MyBatis程序
public static void main(String[] args) throws IOException {
// 1. 获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 2. 构造SqlSessionFactory对象, builder方法需要一个InputStream对象(mybatis-config.xml文件)
// 两种方式获取这个InputStream对象(本质上是一种方法, 都是类的根路径下加载信息)
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
InputStream resourceAsStream1 =
ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory1 = sqlSessionFactoryBuilder.build(resourceAsStream1);
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
// 3. 构造SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
SqlSession sqlSession1 = sqlSessionFactory1.openSession();
}
}