mybatis第一讲:初探mybatis实现简单的查询

一、知识要点

  1. 什么是MyBatis?
    (1)MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的 JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射, 将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。
  2. ORM工具的基本思想
    (1)无论是Hibernate还是MyBatis,你会发现它们的共同点:

从配置文件(通常是XML配置文件)得到SQL会话工厂对象。
由SQL会话工厂对象产生SQL会话对象。
利用SQL会话对象完成对数据的增删改查和事务提交等。
在用完之后关闭SQL会话对象。
在Java对象和数据库之间有做映射的XML配置文件
3. 项目3

二、实例项目步骤

创建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在pom文件里添加相关的文件

在这里插入图片描述
附上相关的代码:<?xml version="1.0" encoding="UTF-8"?>

4.0.0

<groupId>net.hw.mybatis</groupId>
<artifactId>MyBatisDemo</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.40</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

点击刷新按钮
在这里插入图片描述

查看下载到本地的jar包

在这里插入图片描述
在这里插入图片描述

打开Maven Repository网

在这里插入图片描述
在搜索框里输入待查的jar包名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将红框里的依赖元素复制到pom文件里的元素里
在这里插入图片描述

创建与用户表对应的用户实体类 - User

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代码附上:

public class User {
private int id;
private String name;
private int age;
private String address;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            ", address='" + address + '\'' +
            '}';
}

}

创建用户实体关系映射配置文件

在resources目录里创建mapper子目录,然后在里面创建实体关系映射配置文件 - UserMapper.xml
在这里插入图片描述
在这里插入图片描述

创建MyBatis配置文件

在resources目录里创建mybatis-config.xml
在这里插入图片描述
在这里插入图片描述
到这一步我们的mybatis-config.xml文件就键好了
在这里插入图片描述

在这里插入图片描述
附上代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!--配置数据库环境-->
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/testdb?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="p@ssw0rd"/>
        </dataSource>
    </environment>
</environments>

<!--配置实体关系映射器文件-->
<mappers>
    <mapper resource="mapper/UserMapper.xml"/>
</mappers>

简要说明
mybatis-config.xml 是 MyBatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关内容,还有 Java 类所对应的别名,比如,这个别名非常重要,在具体类的映射中,比如UserMapper.xml 中 resultType 就是对应这里的User。要保持一致。
mybatis-config.xml 里面 的是包含要映射的类的实体关系映射配置文件。
在UserMapper.xml 文件里面主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等。

创建日志属性文件

在resources目录里创建log4j.properties文件
在这里插入图片描述

创建测试类测试用户操作

1、创建测试类 - TestUserOperation
在test/java目录里创建net.hw.mybatis.bean包,然后在包里创建测试类 - TestUserOperation
在这里插入图片描述

运行测试方法 - testFindById()

在这里插入图片描述
修改testFindById()代码,再运行查看结果

在这里插入图片描述

运行测试方法 - testFindAll()

在这里插入图片描述

采用接口方式使用MyBatis

前面,我们采用SqlSession实例来直接执行已映射的SQL语句:sqlSession.selectOne( “net.lbd.mybatis.mapper.UserMapper.findById”, id); 其实还有更好更简洁的方式,使用合理描述参数和SQL语句返回值的接口(比如UserMapper.class),这样代码更简单,不容易发生字符串文字和转换的错误。

创建用户映射器接口

创建net.hw.mybatis.mapper包,然后在包里创建用户映射器接口 - UserMapper
在这里插入图片描述
在这里插入图片描述
意思就是圈出来的语句的作用是相同的,知识从图中也可以看出,第一个方法是要简单许多,所以我们平时用的时候应该是经常用到第一种方法

注意:UserMapper接口的完整路路径(包名+接口名)必须是\元素的namespace属性值 net.hw.mybatis.mapper.UserMapper,并且里面定义的方法名必须与UserMapper.xml里定义的SQL语句的id值保持一致,比如 findById、findAll。

创建测试类测试用户映射器接口

1、创建测试类 - TestUserMapper
在test/java里创建net.hw.mybatis.mapper包,然后在包里创建测试类 - TestUserMapper
在这里插入图片描述
附上代码:
package net.lbd.mybatis.mapper;

import net.lbd.mybatis.bean.User;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**

  • 功能:测试用户映射器接口

  • 作者:李补都

  • 日期:2021年03月06日
    */
    public class TestUserMapper {

    private SqlSession sqlSession; // SQL会话
    private UserMapper userMapper; // 用户映射器

    @Before
    public void init() {
    try {
    // 读取MyBatis配置文件作为字符输入流
    Reader reader = Resources.getResourceAsReader(“mybatis-config.xml”);
    // 基于MyBatis配置文件构建SQL会话工厂
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
    // 利用SQL会话工厂获取SQL会话
    sqlSession = factory.openSession();
    // 利用SQL会话获取用户映射器对象
    userMapper = sqlSession.getMapper(UserMapper.class);
    // 提示用户SQL会话对象创建成功
    System.out.println(“sqlSession对象已创建。”);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    @Test
    public void testFindById() {
    int id = 1;
    User user = userMapper.findById(id);
    if (user != null) {
    System.out.println(user);
    } else {
    System.out.println(“编号为[” + id + “]的用户未找到。”);
    }
    }

    @Test
    public void testFindAll() {
    List users = userMapper.findAll();
    users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
    // 关闭SQL会话
    sqlSession.close();
    // 提示用户SQL会话对象关闭
    System.out.println(“sqlSession对象已关闭。”);
    }
    }

运行测试方法 - testFindById()

在这里插入图片描述

运行测试方法 - testFindAll()

在这里插入图片描述

整体运行

在这里插入图片描述

三、遇到的问题

遇到的问题很多,但是都比较小,都是一些版本小,或者是MySQL的秘密没有对,粗细导致的单词打错,我觉得比较大的问题呢是,对此门课程还不是很熟悉,所以操作起来的时候难免发一些非常低级的错误,希望能越来越熟悉!

四、学习心得

要认真上课,下来花时间认真操作,多练习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值