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);
    }
}

運行結果:
在這裏插入圖片描述

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