【测试开发】知识点-mybatis,使用入门

在之前的开发过程中,使用的是mybatis-plus框架来进行数据库操作。但是在开发过程中,会有需要自定义sql的地方,这就要用原生的mybatis

这里再简述下:Mybatis-Plus 只是在 MyBatis 的基础上做了增强但不做改变,可以进一步简化开发、提高效率。

一、介绍 MyBatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。原来是 Apache 的一个开源项目 iBatis, 2010年6月这个项目由 Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code 旗下, iBatis3.x 正式更名为 MyBatis 。

MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

二、简单的查询

1. 添加依赖

我直接在测试平台的项目的 pom.xml 添加依赖,因为项目里的表和javaBean都是现成的,导入依赖完成后即可使用。

  <!--mybatis-->
  <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
  </dependency>

2. 新增全局配置文件

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的,所以需要有个 XML 文件用于构建 SqlSessionFactory 的实例。

我在项目的resources下新建mybatis-config.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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

这里<dataSource>需要换成自己对应的数据库连接信息。<mapper>里也是后面需要修改的地方,用于注册具体放sql的 xml 文件。

3. 创建sql映射的 xml 文件

就先使用 User 表测试用,对应的 javaBean 就是 package com.pingguo.bloomtest.pojo;下面的User类:

@Data
public class User {
    @TableId(type = IdType.ID_WORKER)
    private Long id;

    private String username;
    private String password;

    @TableField(fill = FieldFill.INSERT)        // 新增的时候填充数据
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) // 新增或修改的时候填充数据
    private Date updateTime;
}

OK,新建一个 xml 文件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="org.mybatis.example.UserMapper">
    <select id="selectUser" resultType="com.pingguo.bloomtest.pojo.User">
      select * from user where id = #{id}
    </select>
</mapper>
  • namespace:名称空间,暂时随便起个名字,后面可以跟 id 组成唯一标识
  • id:代表这个标签的唯一标识
  • resultType:返回值类型,查出来的记录想要封装成 User 对象
  • sql:在标签里写上对应的 sql
  • #{id}:从传递过来的参数中取出 id 值

4. 测试类进行查询

新建一个测试类MybatisTest用于测试:

public class MybatisTest {

    @Test
    void test() throws IOException {
        // 根据配置文件,创建一个 SqlSessionFactory 对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 获取 SqlSession 实例,可以执行已经映射的 sql 语句
        try (SqlSession session = sqlSessionFactory.openSession()) {
            User User = (User) session.selectOne("org.mybatis.example.UserMapper.selectUser", 3);
            System.out.println(User);
        }
    }
}
  • 第一步:根据全局的配置文件创建一个 SqlSessionFactory 对象
  • 第二步:获取 SqlSession 实例,执行已经映射的 sql 语句。selectOne(),分别传入唯一标识和参数

执行一下,发现报错了:

原来映射sql的xml文件没有在全局配置文件里注册。修改mybatis-config.xml中的mappers标签:

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

再重新执行一下

查询成功。

这里仅仅是个简单查询,就相当于写了个 helloword,后续还有更多关于 mybatis 的学习。

posted @ 2021-11-11 11:33  把苹果咬哭的测试笔记  阅读(102)  评论(0编辑  收藏  举报