前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2分钟带你快速了解MyBatisPlus具有的一些扩展功能!

2分钟带你快速了解MyBatisPlus具有的一些扩展功能!

原创
作者头像
reload
发布2024-04-24 22:47:25
1360
发布2024-04-24 22:47:25
举报
文章被收录于专栏:Java后端Java后端

哈喽,大家好呀!这里是码农后端。上一篇介绍了什么是MyBatisPlus及其核心功能,本篇将带你快速了解MyBatisPlus具有的一些扩展功能!

一、扩展功能

1、问题说明

如下代码片段为实现用户相关的业务,当需要实现订单(order)业务时,只需要将涉及的user类或接口的名称替换为order即可。

不难看出,即使业务需求发生变化,代码的写法也比较固定。

既然写法是固定,那么有没有可以快速生成的工具或插件来帮助我们加快开发效率呢?

2、MyBatisPlus插件

1)下载插件

打开IDEA,点击File ->Settings ->Plugins,搜索MyBatisPlus,点击Install安装即可。

插件安装完成后需要重启IDEA才会起作用

2)配置数据库

点击上方Other ->Config Database,对我们的数据库进行配置,填写对应的数据库名和密码。

配置好数据库后,就能使用了;点击上方Other ->Code Generator,选择表并填写勾选好相关信息后,点击code generator进行代码生成即可。

3、逻辑删除

所谓逻辑删除,是指基于代码逻辑模拟删除效果,不是物理意义上的把数据从磁盘中删除,不会真正删除数据。

3.1 思路

1)在表中添加一个字段标记数据是否被删除

2)当删除数据时把标记置为1

3)查询时只查询标记为0的数据

3.2 实现

根据上述思路,假设逻辑删除字段为deleted,则

1)删除操作:

代码语言:sql
复制
update user set deleted = 1 where id = 1 and deleted = 0;

2)查询操作:

代码语言:sql
复制
select * from user where deleted = 0;
3.3 MP实现

MybatisPlus提供了逻辑删除功能,只需要在application.yaml文件中配置逻辑删除的字段名称和值即可。

代码语言:yml
复制
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag #全局逻辑删除的实体字段名,字段类型可以是boolean、integer
      logic-delete-value: 1 #逻辑已删除值(默认为1)
      logic-not-delete-value: 0 #逻辑未删除值(默认为0)
3.4 小结

使用逻辑删除,会降低查询效率,原因是:

1)由于逻辑删除并不是真正从物理磁盘中删除,会导致数据库表的垃圾数据越来越多,从而响应表的性能。

2)SQL中全都需要对逻辑删除字段做判断

其他办法:可以把数据迁移到其它表(如果数据不能删除)

4、枚举处理器

怎样实现PO类中的枚举类型变量与数据库字段的转换?

1)给枚举中的与数据库对应value值添加@EnumValue注解

代码语言:java
复制
@EnumValue
private final int value;
@JsonValue
private final string desc;

2)在配置文件中配置统一的枚举处理器,实现类型转换

代码语言:yaml
复制
mybatis-plus:
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

5、Json处理器

用于解决数据库中json数据类型与java类型之间的转换。

如下,数据库的user表中有一个json类型的字段info;而在java的User实体类中,info字段是String类型的,为了方便,把info属性的相关信息单独抽出来定义为一个UserInfo类,再把info由原来的String类型替换为UserInfo类型。

二、插件功能

MyBatisPlus提供的内置拦截器如下

1、分页插件

1)首先需要在配置类中注册MyBatisPlus的核心插件,并添加分页插件

2)使用分页的API

3)编写测试类测试

好了,以上就是这篇文章的全部内容了,我们下期再见!

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、扩展功能
    • 1、问题说明
      • 2、MyBatisPlus插件
        • 3、逻辑删除
          • 3.1 思路
          • 3.2 实现
          • 3.3 MP实现
          • 3.4 小结
        • 4、枚举处理器
          • 5、Json处理器
          • 二、插件功能
            • 1、分页插件
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com