MyBatis精讲(三)一篇文章让你学会用MyBatis获取数据

欢迎来到全网最完整的Java系列教程!!!

本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。跟着老K的教程每天学习一点,你会发现入门Java没有想象中那么难。

经过前2篇文章的介绍,我们对MyBatis已经有了最基本的认识。

本期的这篇文章,我们会进入到MyBatis最实用的部分,讲解增删改查的操作。

阅读本文,可配合前两篇文章服用,效果更好:

内容会有点多,建议收藏,等有空或者有需要的时候拿出来查看。


一、MyBatis实现CRUD的准备工作

既然要实现和数据库的交互,那自然要创建一个数据库。为了统一教学效果,我们先将下述SQL语句导入到数据库,以创建统一的数据库:

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `salary` decimal(10, 2) NOT NULL,
  `age` int NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `department`;
CREATE TABLE `department`  (
  `did` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `member` int NULL DEFAULT NULL,
  PRIMARY KEY (`did`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

INSERT INTO `employee` VALUES (5001, '赵乾', '销售部', 6000.00, 28);
INSERT INTO `employee` VALUES (5002, '孙礼', '销售部', 7000.00, 34);
INSERT INTO `employee` VALUES (6001, '周武', '技术部', 6500.00, 27);
INSERT INTO `employee` VALUES (6002, '郑望', '技术部', 7500.00, 40);

INSERT INTO `department` VALUES (1, '销售部', 5);
INSERT INTO `department` VALUES (2, '技术部', 6);

所有通过MyBatis实现CRUD的,本质都是通过对3个文件的配置来实现:

1. java实体类

由于本项目中有2个数据表,分别是employee和department,所以我们也根据数据表的格式设计对应的实体类:

public class Employee {
    private Integer id;
    private String name;
    private String depart;
    private Float salary;
    private Integer age;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getDepart() {
        return depart;
    }

    public void setDepart(String depart) {
        this.depart = depart;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
public class Department {
    private Integer did;
    private String depart;
    private Integer member;

    public Integer getDid() {
        return did;
    }

    public void setDid(Integer did) {
        this.did = did;
    }

    public String getDepart() {
        return depart;
    }

    public void setDepart(String depart) {
        this.depart = depart;
    }

    public Integer getMember() {
        return member;
    }

    public void setMember(Integer member) {
        this.member = member;
    }
}
  1. 类的私有属性和数据表中的列信息一一对应;
  2. 所有属性都要配置好getter和setter方法。

java实体类只要满足上述2个要求即可。

2. mapper映射表

有了实体类,我们就可以编写映射表了。

我们首先在路径./src/main/resources/下创建一个mappers目录,用来存放各种映射表;

在本例中,我们在该目录下创建一个名为humanResource.xml的文件作为映射,其内代码准备如下:

<?xml version="1.0" encoding="UTF-8" ?>


    

3. mybatis-config.xml

这是MyBatis的基础配置文件,创建和设置的基础逻辑在MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战中已经讲述了,有需要的可以回看。

要实现CRUD的话,只要在mybatis-config.xml文件中的标签下,加入如下配置即可:


    

二、第一次通过MyBatis获取数据

做好了上述准备工作,我们就可以通过MyBatis向数据库获取数据了。

1. 编写mapper映射

humanResource.xml标签里添加相应方法: