Mybatis Plus 快速入門
阿新 • • 發佈:2021-01-19
一、快速入門
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_timeDATETIME 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;