美文网首页
MyBatis Plus-简单使用

MyBatis Plus-简单使用

作者: 石头耳东 | 来源:发表于2022-04-29 15:15 被阅读0次

零、本文纲要

  • 一、MyBatis Plus
  1. Dao接口被容器扫描的方式
  2. MyBatis Plus与MyBatis整合开发区别
  • 二、 分页拦截器
  1. 分页查询方法
  2. 分页查询参数构造
  3. 分页拦截器配置
  • 三、 DQL映射匹配
  1. 表字段与编码属性不同
  2. 编码中含有数据库未定义的属性
  3. 某个字段不做查询输出
  4. 表名与编码实体类名不一致
  5. @TableField注解
  6. @TableName注解
  • 四、 DML编程控制
  1. @TableId
  2. ID生成策略
  3. 逻辑删除
  • 五、 乐观锁

一、MyBatis Plus

1. Dao接口被容器扫描的方式

  • ① 方式一

在Dao接口上添加@Mapper注解,并且确保Dao处在引导类所在包或其子包中

  • ② 方式二

在引导类上添加@MapperScan注解,其属性为所要扫描的Dao所在包

2. MyBatis Plus与MyBatis整合开发区别

基础依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>

其余配置不变,Dao接口、Service接口与实现类做如下调整:

① Dao/Mapper接口继承BaseMapper<?>
② Service接口继承IService<?>
③ 实现类继承ServiceImpl<?, ?>

二、 分页拦截器

1. 分页查询方法

IPage<T> selectPage(IPage<T> page, Wrapper<T> queryWrapper)

2. 分页查询参数构造

  • ① IPage<T>参数
IPage<User> page = new Page<>(currentPage, pageSize);
  • ② Wrapper<T>参数

该参数非必须,条件查询时使用。一般使用QueryWrapper实现类,或者LambdaQueryWrapper<?>实现类。

3. 分页拦截器配置

编写一个配置类,自定义MybatisPlusInterceptor的bean,其内部设置PaginationInnerInterceptor拦截器即可。如下:

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1 创建MybatisPlusInterceptor拦截器对象
        MybatisPlusInterceptor mpInterceptor=new MybatisPlusInterceptor();
        //2 添加分页拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

三、 DQL映射匹配

1. 表字段与编码属性不同

假设密码,表字段为pwd,属性为password。则采用如下方法映射:

@TableField(value = "pwd")
private String password;

2. 编码中含有数据库未定义的属性

比如UserDto里面含有OrderId,但是tbl_user表不含order_id,则采用如下映射:

@TableField(exist = false)
private Long OrderId;

3. 某个字段不做查询输出

比如tbl_user表的pwd属性,限制该字段的查询输出,如下配置:

@TableField(value = "pwd", select = false)
private String password;

select属性默认值为true,改为false则查询时不输出。

4. 表名与编码实体类名不一致

比如名为tbl_user表,实体类为User,需要配置:

@TableName("tbl_user")
public class User{
    ... ...
}

各类情形整合,如下:

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    @TableField(value="pwd",select=false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist=false)
    private Integer online;
}

5. @TableField注解

  • ① 作用位置

类属性上方

  • ② 常用属性

value(默认):设置数据库表字段名称
exist:设置属性在数据库表字段中是否存在,默认为true,此属性不能与value合并使用
select:设置属性是否参与查询,此属性与select()映射配置不冲突

6. @TableName注解

  • ① 作用位置

类上方

  • ② 常用属性

value(默认):设置数据库表名称

四、 DML编程控制

1. @TableId

  • ① 作用位置

类属性上方

  • ② 常用属性

value(默认):设置数据库表主键名称
type:设置主键属性的生成策略,值查照IdType的枚举值

2. ID生成策略

  • ① AUTO数据库自增策略
@TableId(type = IdType.AUTO)
private Long id;
  • ② INPUT手动设置ID策略

与NONE策略一致,需要手动设置ID

  • ③ ASSIGN_ID策略

通过雪花算法生成ID

  • ④ ASSIGN_UUID策略

主键varchar类型32位

3. 逻辑删除

  • ① @TableLogic注解

如果只是对单个实体设置逻辑删除,则可以如下使用:

@TableLogic(value="0",delval="1")
//value为正常数据的值,delval为删除数据的值
private Integer deleted;

注意:需要在对应表内也添加delete字段。

  • ② 全局配置
mybatis-plus:
  global-config:
    db-config:
      # 逻辑删除字段名
      logic-delete-field: deleted
      # 逻辑删除字面值:未删除为0
      logic-not-delete-value: 0
      # 逻辑删除字面值:删除为1
      logic-delete-value: 1

五、 乐观锁

1. 快速入门

  • ① 表添加version字段

  • ② 实体类添加version属性

@Version
private Integer version;
  • ③ 添加乐观锁拦截器

也可以与分页拦截器添加在一起,如下:

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        //1.定义Mp拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //2.添加乐观锁拦截器
        mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mpInterceptor;
    }
}
  • ④ 执行DML
@Test
void testUpdate(){
    //1.先通过要修改的数据id将当前数据查询出来
    User user = userDao.selectById(1L);
    //2.将要修改的属性逐一设置进去
    user.setName("Test02");
    userDao.updateById(user);
}

六、结尾

以上即为MyBatis Plus-简单使用的全部内容,感谢阅读。

相关文章

  • MyBatis Plus-简单使用

    零、本文纲要 一、MyBatis Plus Dao接口被容器扫描的方式 MyBatis Plus与MyBatis整...

  • springboot下使用mybatis

    springboot下使用mybatis 使用mybatis-spring-boot-starter即可。 简单来...

  • Mybatis快速入门

    Mybatis 学习内容 Mybatis框架的简单入门 Mybatis框架基本的使用 Mybatis框架的深入和多...

  • ThreadLocal初级使用

    ThreadLocal介绍 使用ThreadLocal改造下mybatis简单分页 借鉴mybatis PageH...

  • mybatis-one

    简单的mybatis项目构建使用maven构建项目: 依赖包: mybatis配置文件:mybatis-confi...

  • MyBatis 简单使用

    0 文件路径图 1 sql(src\main\mysql\c_customer.sql) 首先找到 sql 文件 ...

  • MyBatis Plus-代码生成器

    前言:本文末尾处附有自定义代码生成器的源码,感兴趣的可以前往下载。 零、本文纲要 一、代码生成器快速入门二、源码使...

  • Java框架--Mybaits(一)

    为什么要使用Mybatis? 快速入门 高级映射 动态SQL 1. 为什么要使用Mybatis? 通过简单配置就可...

  • Mybatis源码研读(一)—— XML解析

    走进Mybatis 上文中简单的介绍过了Mybatis的使用。本篇文章将介绍Mybatis如何解析XML 组件: ...

  • MyBatis+Spring+Maven的简单整合Demo

    本文主要是示范基于Maven的MyBatis+Spring的简单使用,其中主要涉及到的是MyBatis的配置使用,...

网友评论

      本文标题:MyBatis Plus-简单使用

      本文链接:https://www.haomeiwen.com/subject/pbysyrtx.html