目录
一 什么是mybatis
mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。
二 mybatis的作用
mybatis作为一个框架,它的主要作用就是简化我们后端代码与数据库之间的连接。我们原生的JDBC连接数据库过于繁琐,而mybatis底层帮我们实现了jdbc的功能,简化了我们的代码量,使我们有更多的时间专注与代码本身。
三 如何使用mybatis
至于如何使用原生的mybatis,我大致将其分为五步:
第一步:设置打包方式,添加依赖。
因为我们是maven来创建项目的,所以我们直接在pom.xml文件中设置打包方式并且配置所需要的jar包的坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.feisi</groupId>
<artifactId>myBatis-01</artifactId>
<version>1.0-SNAPSHOT</version>
<!--第一步:设置打包方式为jar包-->
<packaging>jar</packaging>
<!-- 第二步:引入mybatis依赖和mysql驱动依赖-->
<dependencies>
<!-- mybatis驱动依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- 单元测试的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
因为我们使用mybatis,并且需要连接数据库,所以mybatis和mysql驱动的jar包是必须的。
第二步:配置mybatis核心配置文件。
mybatis核心配置文件是必须的,它是一个xml文件,名字可以自己命名 , 但是一般我们统一都将它命名为:mybatis-config.xml 。它的主要作用是配置环境以及引入Mapper映射文件等等 , 至于它的标签的具体作用 , 后面会专门进行讲解。
<?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://localhost:3306/bookstore"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 第五步:执行Mapper.xml文件的路径-->
<!-- 因为是自动从路径开始寻找(也就是resources下开始) , 所以我们直接写文件名即可-->
<mapper resource="BookMapper.xml"/>
</mappers>
</configuration>
第三步:配置Mapper映射文件。
这个映射文件也是mybatis必须配置的文件,它也是一个xml文件。它的主要作用就是编写mysql语句,它的命名也是自己命名 , 但是一般我们都统一命名为:xxxMapper.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="org.mybatis.example.BlogMapper">
<!-- 第三,四步:创建Mapper.xml配置文件 , 并且编写sql语句-->
<!-- insert语句-->
<insert id="insertBook">
insert into t_book(bid , bname , price , author , image , cid , sales , stock)
values (88 , 'mybatis入门' , 88.8 , '张作霖' , 'static/images/9265169-1_1.jpg' , 1 , 4 , 5)
</insert>
<!-- update语句-->
<update id="update">
</update>
</mapper>
第四步:使用mybaits执行sql语句
在前面我们已经做好的mybatis 的准备工作 , 那么最后我们就需要使用mybatis执行sql语句实现对数据库数据的curd。主要分为以下步骤:
首先需要获取SqlSession对象 , 然后使用SqlSession对象执行你需要执行的sql语句,最后提交数据 .但是如何获取SqlSession对象呢?具体操作如下:
下面是我们创建一个测试类,进行专门的测试。
package com.feisi.mybatis.test;
import com.feisi.mybatis.utils.SqlSessionUtil;
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;
/**
* junit单元测试
* 作用:单元测试可以把每个方法当成一个测试单位 , 可以单独运行某个方法,而不用去编写很多主类去运行测试
*/
//carMapper测试类
public class BookMapperTest {
/**
* 测试第一个mybatis原生的方法
* @throws IOException
*/
@Test
public void testInsertBook() throws IOException {
//1.创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 2.由sqlSessionFactoryBuilder对象创建sqlSessionFactory对象
//需要传入一个指向核心配置文件的输入流参数
InputStream ins = Resources.getResourceAsStream("mybatis-config.xml") ;//根据路径下的核心配置文件路径
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(ins);
// 3.由sqlSessionFactory对象创建sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4.最后由sqlSession对象来执行sql语句
int count = sqlSession.insert("insertBook") ; //传入参数为需要执行的那条sql语句的id ,返回执行条数
// 5.最后再手动提交执行的sql语句
sqlSession.commit();
sqlSession.close();
System.out.println("执行条数:"+count);
}
}
以上就是mybatis的整个大致的使用过程 , 但mybatis的学习只是刚刚入门 , 后面我们还会对mybatis进行更深入的探索。