MyBatis 快速入门实战

158 阅读6分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

接下来我们就进入到非常重要的一部分,来完成 Mybatis 快速部门。那我们现在想要去完成 MyBatis 快速入门,其实很好的一个办法就是去访问它的一个官方文档,照着 Mybatis 文档来操作完成入门案例的学习。

就是我们刚刚看到的这个官方文档。那么在这个文档的左侧,它就会有一个入门。你点击一下右侧所显示的,就是要去进行 MyBatis 入门案例啊,它的一个简单介绍。

当然我们在进行快速入门演示的时候,不按照官网,我们按照自己的想法来实现 MyBatis 入门案例。所谓的这个快速入门,其实就是要完成一个案例。我们当前要完成的案例需求是通过 MyBatis 去查询数据库 user 表的所有记录,把所有记录中的每条记录封装成一个的 user 对象,并且打印输出在控制台上。

案例步骤分析

想要去完成这个案例,整个步骤可以分成六步来实现。先来分析这六个步骤,然后就按照这六步一步一步来完成。

第一步:当前要进行一些环境准备工作。我们要来创建数据库以及 user 表,并且在 user 表中来插入一些数据。

第二步:我们要来创建一个 Maven 工程,导入相关依赖。因为我们要操作数据库,所以 MySQL 的驱动必不可少,以及我们当前是要使用 MyBatis,以及一个相应单元测试 Junit。

第三步:我们要来编写 user 实体类,在编写 User 实体类的时候,大家要注意当前这个 User 实体,它与 User 表是要去建立一个映射关系的,所以我们在编写 User 实体类它里面的属性名时,不能随便写,要与表中的字段名有一个对应关系。

第四步:来编写一个 UserMapper.xml 映射配置,在去编写这映射配置文件,需要和大家说明一下,这个配置文件就是用来配置实体类与表它的一个映射关系的。那么,这个配置文件的文件名必须是 UserMapper.xml 吗?其实并不是,这只是一种规范。通常我们再去创建映射配置文件的时候,这个命名通常是你当前做的模块后面跟上 mapper.xml,如果当前是做了一个用户模块,这时就将这么映射配置文件命名为 UserMapper.xml,同时也方便我们维护,这个名字它并不是固定的。

第五步:我们要编写 SqlMapConfig.xml 核心配置文件。当大家以后接触到的框架多了之后,就会发现其实每一个框架它都会有自己的一个核心配置文件,MyBatis 也不例外,MyBatis 也要有一个自己的核心配置文件。就是当前我们要去创建的这个 SqlMapConfig.xml。同时也要跟大家强调这个核心配置文件,它的名称并不是固定的,只不过大家都约定俗成就叫 SqlMapConfig.xm。所以当大家一接触项目,一看到别人的代码中有一个 SqlMapConfig.xm,那我就会知道,这个就是 MyBatis 核心配置文件。在这个 SqlMapConfig.xm 核心配置文件中要完成两部分内容,包括数据库缓存的配置以及映射关系配置的引入,简单来说就是在核心配置文件中来引入映射配置文件。

第六步:我们来编写测试代码。在编写测试代码的过程中,会涉及到很多之前大家都没有接触过的一些 AP。

这个就是我们关于入门案例它的一个步骤分析。那接下来我们就按照刚刚分析的这六步一步一步来完成。

编写代码实现

第一步:我们先来创建数据库以及 User 表。

CREATE DATABASE `db_mybatis`;
CREATE TABLE `t_user`  (
  `id` int NOT NULL,
  `username` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名称',
  `birthday` datetime NULL DEFAULT NULL COMMENT '生日',
  `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '性别',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
​
INSERT INTO `t_user` VALUES (1, 'itbbfx01', '2002-01-22 14:41:28', '男', '广西河池市宜州市');
INSERT INTO `t_user` VALUES (2, 'itbbfx02', '2001-01-22 14:41:28', '女', '广西河池市巴马县');

同时,在创建该数据库的同时,也创建了一个user 表,这个 user 表中插入两条记录。

第二步:我们要来创建一个 Maven 工程,并且在创建完工程之后导入相关依赖。

   <!-- 引入 MySQL 数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- lombok 依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>
        <!-- 引入 MyBatis 依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!-- 单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

这里为了方便开发,我们直接采用 lombok 插件生成 get 和 set 方法,所以需要引入 lombok 依赖。

第三步:也就是编写一个user 实体类。

@Data
@ToString
public class UserEntity {
    private Integer id;
    private String userName;
    private Date birthday;
    private String sex;
    private String address;
}

我们当前这个 user 实体,它里面编写属性的时候,就不能随便写了。因为当前这个 user 实体要与 user 这张表要来去建立映射关系的。我们当前 user 表中一共有五个字段,我们当前这个 user 实体中也要来编写五个属性,并且属性名与这些字段名都要有一个对应关系。

第四步:我们要编写一个 userMapper.xml,我们要在这个映射配置文中去配置实体类以及 user 表它的一个映射关系。并且我们的 SQL 语句也是要写在这个 usermapper.xml 这个映射文件。这个映射配置文件创建在哪?那通常我们把配置文件都是创建在 resources 这个目录下。

<?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="com.itbbfx.entity.UserEntity">
    <!--
        namespace:命名空间,与 id 属性共同构成唯一标识
        resultType:返回结果类型(自动映射封装):要封装的实体的全路径
    -->
    <select id="findAll" resultType="com.itbbfx.entity.UserEntity">
        select * from t_user
    </select>
</mapper>

第五步:我们要来编写 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"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 引入映射配置文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

第六步:编写测试。

public class MyBatisTest {
​
    @Test
    public void myBatisQuickStartTest() throws IOException {
        //1. 加载核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2. 获取 SqlSessionFactory 工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
​
        //3. 获取SQLSession 会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4. 执行 SQL,参数:statement
        List<UserEntity> userEntityList = sqlSession.selectList("UserEntity.findAll");
        //5. 遍历结果
        for (UserEntity userEntity : userEntityList) {
            System.out.println(userEntity);
        }
        sqlSession.close();
    }
}

小结

第一步:创建数据库和数据库表。

第二步:创建项目,并且导入了相关的依赖。

第三步:创建实体类,并且这个实体类里面的属性名要和数据库表中的字段名有一个对应关系。

第四步:来编写映射文件。

第五步:来编写核心配置文件。

第六步:来编写测试类。