1. 程式人生 > 實用技巧 >Mybatis Plus 快速入門

Mybatis Plus 快速入門

一、快速入門

1、建庫建表

#建立使用者表
CREATE TABLE user (
    id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主鍵',
    name VARCHAR(30) DEFAULT NULL COMMENT '姓名',
    age INT(11) DEFAULT NULL COMMENT '年齡',
    email VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
    manager_id BIGINT(20) DEFAULT NULL COMMENT '直屬上級id',
    create_time 
DATETIME DEFAULT NULL COMMENT '建立時間', CONSTRAINT manager_fk FOREIGN KEY (manager_id) REFERENCES user (id) ) ENGINE=INNODB CHARSET=UTF8; #初始化資料: INSERT INTO user (id, name, age, email, manager_id , create_time) VALUES (1087982257332887553, '大boss', 40, '[email protected]', NULL ,
'2019-01-11 14:20:20'), (1088248166370832385, '王天風', 25, '[email protected]', 1087982257332887553 , '2019-02-05 11:12:22'), (1088250446457389058, '李藝偉', 28, '[email protected]', 1088248166370832385 , '2019-02-14 08:31:16'), (1094590409767661570, '張雨琪', 31, '[email protected]', 1088248166370832385 ,
'2019-01-14 09:15:15'), (1094592041087729666, '劉紅雨', 32, '[email protected]', 1088248166370832385 , '2019-01-14 09:48:16');

2、引入依賴

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>mp</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
    </parent>

    <dependencies>
        <!--SpringBoot啟動器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--SpringBoot test啟動器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--lombok簡化java程式碼-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--Mybatis-Plus啟動器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!--Mysql Jdbc驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

</project>

3、配置

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

4、編碼

Application.java

package com.mp;

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

@SpringBootApplication
@MapperScan("com.mp.dao")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

User.java

package com.mp.entity;

import lombok.Data;

import java.util.Date;
@Data
public class User {
    //主鍵
    private Long id;
    //姓名
    private String name;
    //年齡
    private int age;
    //郵箱
    private String email;
    //直屬上級id
    private Long managerId;
    //建立時間
    private Date createTime;
}

UserMapper.java

package com.mp.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mp.entity.User;

public interface UserMapper extends BaseMapper<User> {
}

5、測試

SimpleTest.java

package com.mp;

import com.mp.dao.UserMapper;
import com.mp.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class SimpleTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void select(){
        List<User> list = userMapper.selectList(null);
        list.forEach(System.out::println);
    }
}

測試 insert 語法

@Test
public void insert() {
    User user = new User();
    user.setName("劉明強");
    user.setAge(31);
    user.setManagerId(1088248166370832385L);
    user.setCreateTime(new Date());
    int rows = userMapper.insert(user);
    System.out.println("影響記錄數:" + rows);
}

二、常用註解

注意上面的 insert 是可以成功插入資料的,但是程式碼中未給主鍵欄位賦值,預設情況下,MP 會將類名稱自動識別為資料庫表名,對類中名為 id 的欄位會自動識別是主鍵欄位,而且 MP 自動識別駝峰形式的命名方式。

但現實情況,類名不等於資料庫表名,而且主鍵欄位也不一定叫 id,屬性和資料庫欄位也不一定滿足駝峰格式,對此,MP 也提供瞭解決方法。參考官網文件

@Data
@TableName("mp_user")
public class User {
    //主鍵
    @TableId
    private Long userId;
    //姓名
    @TableField("name")
    private String realName;
}

三、排除非表字段的三種方式

1、對屬性加關鍵字 transient,使該屬性不參入序列化

private transient String remark;

2、對屬性加關鍵字 static,使之成為類變數

private static String remark;

3、使用@TableField(exist = false),標記資料庫不存在該欄位

@TableField(exist = false)
private String remark;