目录
最近写的项目中应用到了MybatisPlus,特此来学习记下笔记。
介绍
MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
使用
Step1:
首先建立一个数据库,这里是根据MybatisPlus官方文档给的sql脚本建立的
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
Step2:
新建一个Springboot工程,然后引入相关的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--MybatisPlus依赖,不需要在额外引入Mybatis-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--Druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
Step3:
配置数据库的基本信息
spring:
datasource:
username: ****
password: ****
url: *****
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
Step4:
创建相应的pojo类和mapper接口,并加上@MapperScanner注解
@SpringBootApplication
@MapperScan("com.jp.mptest.mapper")
public class MpTestApplication {
public static void main(String[] args) {
SpringApplication.run(MpTestApplication.class, args);
}
}
Step5:
MP的一大特性就是
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
因为其内置了通用Mapper,所以我们就让我们创建的Mapper接口去继承BaseMapper<对应的pojo类>
此时,我们就已经实现了MP所提供的对于数据库的CRUD操作,来测试一下,获取所有的user信息:
控制台信息,可以看到所有的成员信息已经被查出
补充:
以上就是Mapper CRUD接口的使用步骤,当然BaseMapper这个类中提供的接口种类是非常多的,详情可以见MP官方文档——CRUD 接口 | MyBatis-Plus
常用注解说明
1.@TableName 表名注解
因为MP会默认将pojo类名当成表名,如果类名和表名不一致的时候可以使用此注解
@TableName(value="表名")
2.@TableId 主键注解
@TableId(value = "id", type = IdType.AUTO):自增
3.@TableField 字段注解
用于类中的字段名和数据库中的字段名不一致的情况,或该字段有特殊用途
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。
@TableField(condition = SqlCondition.LIKE):表示该属性可以模糊搜索。
@TableField(fill = FieldFill.INSERT):注解填充字段 ,生成器策略部分也可以配置!
4.@Version 乐观锁标记注解
小知识
MP可以在插入一条数据后,直接获取刚刚插入的数据的主键id