基础使用

使用步骤

  1. 引入依赖

  2. 自己的mapper接口继承BaseMapper

我们可以看到(下图)baseMapper有着一系列的基础数据库操作

实体类配置

MybatisPlus通过以下实现CRUD数据库表信息

•默认以类名驼峰转下划线作为表名

•默认把名为id的字段作为主键

•默认把变量名驼峰转下划线作为表的字段名

MybatisPlus的常用注解:

•@TableName:指定表名称及全局配置

•@TableId:指定id字段及相关配置

•@TableField:指定普通字段及相关配置

@TableField的常见场景:

•成员变量名与数据库字段名不一致

•成员变量名以is开头,且是布尔值

•成员变量名与数据库关键字冲突

•成员变量不是数据库字段

yaml配置

1
2
3
4
mybatis-plus:
#注册别名后,就不用在xml中写全路径名称了
  type-aliases-package: com.itheima.mp.domain.po
#  其它很多配置都不用配置,使用默认值即可

mybatisPlus不仅实现了一些基础的单表查询mapper,甚至提供了service接口,借助该接口能够完成一些基础业务

IService

通过一个接口和一个实现类来协调完成这些基础功能的实现

扩展插件

逻辑删除

直接再yaml中配置,配置完成后,原来删除方法如,deleteById,就会执行逻辑删除

1
2
3
4
5
6
7
8
9
mybatis-plus:
  global-config:
    db-config:
      # 逻辑删除字段名(在数据表中的)
      logic-delete-field: deleted
      # 逻辑已删除值(默认为 1)
      logic-delete-value: 1
      # 逻辑未删除值(默认为 0)
      logic-not-delete-value: 0

JSON处理器

能够将数据库中存储的json数据,解析为对象

步骤:1.注入字段使用注解;2.创建实体类

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
@Data
@TableName(value = "user", autoResultMap = true)
public class User {

  ...

    /**
     * 详细信息
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> info;

   ...

}
1
2
3
4
5
6
7
8
9
@Data
@AllArgsConstructor(staticName = "of") //便于静态构造创建对象
@NoArgsConstructor
public class UserInfo {
    private Integer age;
    private String intro;
    private String gender;

}

分页插件

单独的分页插件依赖

1
2
3
4
5
 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>3.5.14</version>
        </dependency>

配置基于拦截器的分页

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package com.itheima.mp.config;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfig {

    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        interceptor.addInnerInterceptor(pageInterceptor);
        return interceptor;
    }
}