MyBatis教程[1]----项目构建并完成第一个查询操作

前言

本人的MyBatis系列教程均采用当下流行的SpringBoot + MyBatis配置文件版 + 阿里Druid连接池的组合进行讲解,其他组合方式不在本教程讨论范围内。此外,需要学习者有一定的SpringBoot基础,如对此不太了解,可移步本人教程进行SpringBoot的学习。另外,需要对SQL语句有一定的了解,不要求掌握的多好,但基本的增删改查还是要会的。

注:本教程不采用可视化Web界面进行演示,只写HTTP接口,接口遵循RESTful格式。

0.环境说明

SDK版本:1.8
MySQL版本:5.7
开发工具:IntelliJ IDEA
接口调试工具:Postman
演示数据库:study-mybatis(请自行创建)

请运行以下sql脚本导入本篇教程所用数据表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
  `birthday` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生日',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES (1, '小明', '18888888888', '2020-03-16 14:31:21');
INSERT INTO `user` VALUES (2, '小红', '177777777777', '2020-03-16 14:34:58');
INSERT INTO `user` VALUES (3, '小王', '16666666666', '2020-03-16 14:35:11');
INSERT INTO `user` VALUES (4, '小张', '15555555555', '2020-03-16 14:37:25');
INSERT INTO `user` VALUES (5, '小刘', '14444444444', '2020-03-16 14:48:08');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

1.创建SpringBoot工程

1.File–>New–>Project—>Spring Initializer,在这里选择一下SDK版本
在这里插入图片描述
2.填写项目信息
在这里插入图片描述
3.添加依赖
在这里插入图片描述
4.选择项目目录,并确定新建完成,新建完成后,需要import一下maven依赖。项目目录如下:
在这里插入图片描述
5.Maven依赖如下:

<dependencies>
		<!--web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis启动器-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
		<!--mysql连接器-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

至此,SpringBoot工程创建完毕。

2.目录结构创建

需要创建以下目录,用于存放dao层、service层、controller层、配置类代码。

序号 名称 作用
1 entities 存放实体类
2 config 存放配置类
3 mapper 存放MyBatis映射接口(DAO层代码)
4 service 存放service层接口代码
5 service/impl 存放service层接口的具体实现
6 controller 存放控制层代码
7 resource/mapper 存放MyBatis xml映射文件代码

此外,在resource目录下创建一个application.yml文件,用来代替原来的application.properties文件。

创建好的目录结构如下:
在这里插入图片描述

3.创建实体类

在entities包下创建类

package com.yky.springboot.entities;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    private Long id;
    private String name;
    private String phone;
    private Date birthday;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

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

4.创建映射接口

在mapper包下创建接口

package com.yky.springboot.mapper;

import com.yky.springboot.entities.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface UserMapper {

    User selectById(@Param("id") Long id);
}

目前在此接口中只定义了一个方法,该方法的作用是根据id查找User对象

5.编写映射配置文件

在resource/mapper目录下创建UserMapper.xml文件

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace对应Mapper接口的全类名,这样就可以自动匹配上-->
<mapper namespace="com.yky.springboot.mapper.UserMapper">

    <!--
        id:此id对应Mapper接口的方法名
        resultType:填写对应的实体类的全类名,这样才可以把返回的结果自动放到User对象中
        标签体内直接写sql语句,#{id}对应Mapper接口中的  @Param("id") Long id  ,采用#{@Param注解取的变量别名}方式来拿到传入的参数的值
    -->
    <select id="selectById" resultType="com.yky.springboot.entities.User">
       SELECT * FROM `user` WHERE id = #{id}
    </select>
</mapper>

6.配置数据源和映射文件路径

在application.yml文件中添加以下代码:

spring:
  datasource:
    username: root
    password: 123
    #mysql8以上的驱动包需要指定时区
    url: jdbc:mysql://127.0.0.1:23306/study-mybatis?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  #配置mybatis映射文件路径
  mapper-locations: classpath:mapper/*.xml

7.测试

采用IDEA代码自动生成功能生成UserMapper的测试类
在这里插入图片描述
添加@SpringBootTest注解,并编写测试方法

@SpringBootTest
class UserMapperTest {

    @Autowired
    UserMapper userMapper;
    @Test
    void selectById() {

        User user = userMapper.selectById(1L);
        System.out.println(user);
    }
}

运行结果:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章