IDEA SpringBoot-Mybatis-plus 實現增刪改查(CRUD)

wnrun發表於2022-04-22

上一篇: IDEA SpringBoot-Mybatis實現增刪改查(CRUD)
下一篇:Intellij IDEA 高效使用教程 (外掛,實用技巧) 最好用的idea外掛大全

一、前言

  • Mybatis:資料持久化框架
  • Mybatis-Plus:對Mybatis進行了增強,它封裝了基本的增刪改查操作,使我們自己不需要再去寫很多重複的程式碼,大大解放了生產力!

二、建立專案

  • 新建專案時選擇Spring Initializer。
  • 也可以選擇maven新建,但是不建議新手,因為要自己匯入依賴,會給自己搞懵
  • 開啟IDEA,選擇New Project >>>
    在這裡插入圖片描述
  • 建立專案檔案結構、選擇jdk版本
  • 一般選擇Java version8
  • 然後下一步 Next
    在這裡插入圖片描述
  • 選擇專案需要的依賴
  • 首先點選web選擇spring web,再點選SQL選擇MySQL driver 等,然後再一路Finish到新建完成。
    在這裡插入圖片描述
    檢視專案 修改pom.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hao</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        熱部署 可有可無自行選擇-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <!--        @Data 註解 省力的外掛 自動生成set get 有參無參-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--      mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--        jdbc連線池-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

建立成功後刪除src下面的test目錄
說明:
中 spring-boot-starter-parent 幫我們做了SpringBoot相關依賴包的版本號管理,所以有些依賴包不需要我們自己去寫
但像 mybatis-plus-boot-starter 它是不屬於spring-boot相關的, parent中沒有做版本號管理,所以還需要手動寫一下。

三、目錄結構

在這裡插入圖片描述

四、sql和application.yml

4.1 匯入sql語句

CREATE TABLE `user_info` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '使用者id',
	`username` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '使用者名稱' COLLATE 'utf8mb4_general_ci',
	`password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密碼' COLLATE 'utf8mb4_general_ci',
	`create_time` DATETIME NOT NULL COMMENT '建立時間',
	PRIMARY KEY (`id`) USING BTREE
);

說明:建立一個資料庫,然後執行上述sql語句,生成使用者表,主要就下面四個欄位

  • id 使用者id 自增主鍵
  • username 使用者名稱
  • password 密碼
  • create_time 建立時間

4.2 修改application.yml配置檔案

把檔案裡的application.properties修改成yml格式 yml更加便於管理,看起來也更舒適

server:
  port: 8887 #埠號可以自定義
spring:
  devtools:    #這個就是前面我下的熱部署,自行了解
    restart:
      enabled: true  #開啟
      additional-paths: src/main/java 
      exclude: WEB-INF/**
  freemarker:
    cache: false  
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root #自己的資料庫賬號
    password: 123456  #自己的密碼
    url: jdbc:mysql:///test?characterEncoding=utf-8&serverTimezone=UTC  #"?"號前面是資料庫名稱 我的是test   "///"預設為localhost:3306 如果你的不是預設埠自行修改

  #配置MP和在控制檯列印sql語句
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

logging:
  level:
    com:
      hao:
        mapper: debug  //這裡根據自己的路徑新增debug

五,修改程式的啟動入口類DemoApplication

作用是掃描到mapper裡面中的類,注意路徑要和專案中實際路徑一致
@MapperScan(value = "com.對應自己的路徑.mapper")

package com.hao;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.hao.mapper")
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

六,在實體類包中新建UserInfo.java,使之與資料庫中的欄位一一對應 我的包叫pojo 也可以叫entity

package com.hao.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;
//@Data 就是lombok 的註解 自動生成了set get
@Data 
@TableName(value = "user_info")  //@TableName 對應你的資料庫表名
public class UserInfo {
    @TableId(value = "id",type = IdType.AUTO)  //@TableId 說明這條資料自增長也是對應資料庫自增長的
    private Integer id;
    private String username;
    private String password;
    private LocalDateTime createTime;
}

說明:這裡類成員變數和資料庫欄位對應,Mybatis自動做了駝峰法到下劃線的轉換
如:資料庫 create_time -> 類變數 createTime

七,在mapper包中新建UserInfoMapper介面

package com.hao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hao.pojo.UserInfo;

public interface UserInfoMapper extends BaseMapper<UserInfo> {
}

說明:BaseMapper 類封裝了dao層基本的增刪改查操作

八,在src/main/resources/maping資料夾下新建UserInfoMapper的對映檔案UserInfoMapper.xml

<?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="com.自己的路徑.UserInfoMapper">

</mapper>

說明:這裡的namespace和上述的UserInfoMapper路徑對應一致

九,在service裡新建 impl和UserInfoService 介面類

package com.hao.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hao.pojo.UserInfo;

public interface UserInfoService extends IService<UserInfo> {
}

說明:這裡IService封裝了service層基本的增刪改查

十,在service裡的impl新建UserInfoServiceImpl 類

package com.hao.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hao.mapper.UserInfoMapper;
import com.hao.pojo.UserInfo;
import com.hao.service.UserInfoService;
import org.springframework.stereotype.Service;

@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
}

十一,在controller裡新建 UserInfoController類

package com.hao.controller;

import com.hao.pojo.UserInfo;
import com.hao.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequestMapping("/userInfo")
public class UserInfoController {
    @Autowired
    private UserInfoService userInfoService;

    //增加
    @PostMapping("/add")
    public Boolean add(@RequestBody UserInfo userInfo) {
        userInfo.setCreateTime(LocalDateTime.now());
        return userInfoService.save(userInfo);
    }

    //刪除
    @GetMapping("delete/{id}")
    public Boolean delete(@PathVariable Integer id) {
        return userInfoService.removeById(id);
    }

    //修改
    @PostMapping("/update")
    public Boolean update(@RequestBody UserInfo userInfo) {
        return userInfoService.updateById(userInfo);
    }

    //查詢
    @GetMapping("/get/{id}")
    public UserInfo get(@PathVariable Integer id) {
        return userInfoService.getById(id);
    }

    //查詢全部
    @GetMapping("/list")
    public List<UserInfo> list() {
        return userInfoService.list();
    }

}

說明:增刪改查介面,基本上不需要自己寫sql,直接呼叫Mybatis-Plus封裝好的介面。 沒啥好講的

十二,使用Postman進行測試

到這裡就完成了增刪改查操作,接下來我們對上面的程式碼在Postman中進行驗證

1.新增一條資訊

http://localhost:8887/userInfo/add

在這裡插入圖片描述
在這裡插入圖片描述
2.通過使用者id刪除使用者

http://localhost:8887/userInfo/delete/215

在這裡插入圖片描述
在這裡插入圖片描述
3.根據使用者id更新使用者資訊

http://localhost:8887/userInfo/update?id=1   

在這裡插入圖片描述
在這裡插入圖片描述
這裡要注意要用JSON的方式寫引數

4.通過使用者id獲取資訊:

http://localhost:8887/userInfo/get/1

在這裡插入圖片描述
5.列印所有資訊

http://localhost:8887/userInfo/list

在這裡插入圖片描述
在這裡插入圖片描述
三條資訊全部列印出來了

!!!轉載請註明出處!!!
!!!轉載請註明出處!!!
!!!轉載請註明出處!!!

相關文章