MyBatis Plus 入門 (一)

1. 環境準備(SpringBoot+SSM)

1.1 表結構與數據

DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
  `book_id` int(11) NOT NULL AUTO_INCREMENT,
  `book_name` varchar(50) DEFAULT NULL,
  `book_date` datetime DEFAULT NULL,
  `book_price` decimal(10,2) DEFAULT NULL,
  `book_cover` varchar(200) DEFAULT NULL,
  `category_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`book_id`),
  KEY `fk_book_category` (`category_id`),
  CONSTRAINT `fk_book_category` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


INSERT INTO `book` VALUES ('1', '西遊記', '2020-05-19 17:48:04', '50.23', null, '4');
INSERT INTO `book` VALUES ('2', '穿越到明朝', '2020-05-06 17:48:48', '30.60', null, '1');
INSERT INTO `book` VALUES ('3', 'X戰機', '2020-04-29 17:49:46', '60.50', null, '2');
INSERT INTO `book` VALUES ('4', '七匹狼', '2020-05-05 17:50:23', '70.70', null, '3');
INSERT INTO `book` VALUES ('5', '紅樓夢', '2020-05-08 17:50:54', '80.00', null, '4');
INSERT INTO `book` VALUES ('6', '水滸傳', '2020-05-11 17:51:14', '55.00', null, '4');


DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `category` VALUES ('1', '歷史');
INSERT INTO `category` VALUES ('2', '軍事');
INSERT INTO `category` VALUES ('3', '教育');
INSERT INTO `category` VALUES ('4', '名著');

1.2 項目結構

在這裏插入圖片描述

1.3 引入依賴

pom.xml

<!-- 繼承依賴spring-boot-starter-parent -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
</parent>

<dependencies>

    <!-- mysql數據驅動包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <!-- mybatis-plus啓動依賴 -->
    <!-- 不需再引入mybatis包 -->
    <!-- 不需再引入jdbc包 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.2</version>
    </dependency>
    
    <!-- mybaits plus3.1以後把日期類型映射成jdk1.8新增的LocalDateTime丶LocalDate丶LocalTime,會出現轉換異常問題 -->
    <!-- mybatis-typehandlers-jsr310依賴可以解決轉換異常問題 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-typehandlers-jsr310</artifactId>
        <version>1.0.2</version>
    </dependency>

    <!-- mybatis-plus代碼生成器 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.3.2</version>
    </dependency>

    <!-- freemarker模版引擎(用於代碼生成器) -->
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.30</version>
    </dependency>

</dependencies>

1.4 數據源配置

application.properties

# 數據源連接信息
spring.datasource.url=jdbc:mysql://localhost:3306/bookshop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver

# 控制檯打印sql語句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

1.5 SpringBoot啓動類

package com;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.mapper")   //設置掃描Mapper的包
public class BookApplication {
    public static void main(String[] args) {
        SpringApplication.run(BookApplication.class,args);
    }
}

1.6 使用代碼生成器生成各層代碼(也可以手動創建)

  • 代碼生成器參考:https://blog.csdn.net/u013087359/article/details/106954885
  • 設置CodeGenerator類常用的私有靜態屬性值
  • 執行CodeGenerator的main方法,會生成各層文件
  • 把生成的各層代碼複製到項目的src/main/java文件夾下(因爲用的是註解方式,mapper.xml可以不用複製)

1.7 添加控制器方法

package com.controller;

import com.entity.Book;
import com.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
@RequestMapping("//book")
public class BookController {
    @Autowired
    private IBookService bookService;

    //查詢所有數據
    @RequestMapping("findAll")
    private List<Book> findAll(){
        List<Book> list = bookService.list();
        return list;
    }

	//新增數據
    @RequestMapping("add")
    private Book add(){
        Book book=new Book();
        book.setBookName("書籍02");

//        book.setBookPrice(new BigDecimal(10.2));  //錯誤用法,精度會丟失,會出現一串小數
//        book.setBookPrice(new BigDecimal("10.2"));  //正確用法1
        
        book.setBookPrice(BigDecimal.valueOf(10.2));  //正確用法2
        book.setBookDate(LocalDateTime.now());

        bookService.save(book);
        return  book;
    }
}

1.8 訪問控制器方法

  • 啓動BookApplication
  • 在瀏覽器中輸入http://localhost:8080/book/findAll和http://localhost:8080/book/add進行訪問

2. 常用註解(瞭解即可)

參考鏈接:https://mybatis.plus/guide/annotation.html

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