[MyBatisPlus] 标准数据层开发 (CRUD、分页)
标准 CRUD 制作
对于标准的 CRUD 功能都有哪些以及 MP 都提供了哪些方法可以使用呢?
我们先来看张图:
对于这张图的方法,我们挨个来演示下:
新增
在进行新增之前,我们可以分析下新增的方法:
T:泛型,新增用来保存新增数据
int:返回值,新增成功后返回 1,没有新增成功返回的是 0
在测试类中进行新增操作:
执行测试后,数据库表中就会添加一条数据。
但是你会发现数据中的主键 ID,有点长,那这个主键 ID 是如何来的?我们更想要的是主键自增,应该是 5 才对,这个是我们后面要学习的主键 ID 生成策略,这块的这个问题,我们暂时先放放。
删除
在进行删除之前,我们可以分析下删除的方法:
Serializable:参数类型
思考:参数类型为什么是一个序列化类?
从这张图可以看出,
String 和 Number 是 Serializable 的子类,
Number 又是 Float,Double,Integer 等类的父类,
能作为主键的数据类型都已经是 Serializable 的子类,
MP 使用 Serializable 作为参数类型,就好比我们可以用 Object 接收任何数据类型一样。
int:返回值类型,数据删除成功返回 1,未删除数据返回 0。
在测试类中进行新增操作:
注意 id 是 long 型,所以 L 不要掉了
修改
在进行修改之前,我们可以分析下修改的方法:
T:泛型,需要修改的数据内容,注意因为是根据 ID 进行修改,所以传入的对象中需要有 ID 属性值
int:返回值,修改成功后返回 1,未修改数据返回 0
在测试类中进行新增操作:
说明:修改的时候,只修改实体对象中有值的字段。
根据 ID 查询
在进行根据 ID 查询之前,我们可以分析下根据 ID 查询的方法:
Serializable:参数类型,主键 ID 的值
T:根据 ID 查询只会返回一条数据
在测试类中进行新增操作:
查询所有
在进行查询所有之前,我们可以分析下查询所有的方法:
Wrapper:用来构建条件查询的条件,目前我们没有可直接传为 Null
List<T>:因为查询的是所有,所以返回的数据是一个集合
在测试类中进行新增操作:
我们所调用的方法都是来自于 DAO 接口继承的 BaseMapper 类中。
里面的方法有很多,我们后面会慢慢去接触里面的内容。
Lombok
代码写到这,我们会发现 DAO 接口类的编写现在变成最简单的了,里面什么都不用写。反过来看看模型类的编写都需要哪些内容:
私有属性
setter...getter...方法
toString 方法
构造函数
虽然这些内容不难,同时也都是通过 IDEA 工具生成的,但是过程还是必须得走一遍,那么对于模型类的编写有没有什么优化方法?就是我们接下来要学习的 Lombok。
概念
Lombok,一个 Java 类库,提供了一组注解,简化 POJO 实体类开发。
使用步骤
步骤 1:添加 lombok 依赖
注意:版本可以不用写,因为 SpringBoot 中已经管理了 lombok 的版本。
步骤 2:安装 Lombok 的插件
==新版本 IDEA 已经内置了该插件,如果删除 setter 和 getter 方法程序有报红,则需要安装插件==
如果在 IDEA 中找不到 lombok 插件,可以访问如下网站
https://plugins.jetbrains.com/plugin/6317-lombok/versions
根据自己 IDEA 的版本下载对应的 lombok 插件,下载成功后,在 IDEA 中采用离线安装的方式进行安装。
步骤 3:模型类上添加注解
Lombok 常见的注解有:
@Setter:为模型类的属性提供 setter 方法
@Getter:为模型类的属性提供 getter 方法
@ToString:为模型类的属性提供 toString 方法
@EqualsAndHashCode:为模型类的属性提供 equals 和 hashcode 方法
==@Data:是个组合注解,包含上面的注解的功能==
==@NoArgsConstructor:提供一个无参构造函数==
==@AllArgsConstructor:提供一个包含所有参数的构造函数==
Lombok 的注解还有很多,上面标红的三个是比较常用的,其他的大家后期用到了,再去补充学习。
说明:
Lombok 只是简化模型类的编写,我们之前的方法也能用,比如有人会问:我如果只想要有 name 和 password 的构造函数,该如何编写?
这种方式是被允许的。
分页功能
分页查询使用的方法是:
IPage:用来构建分页查询条件
Wrapper:用来构建条件查询的条件,目前我们没有可直接传为 Null
IPage:返回值,你会发现构建分页条件和方法的返回值都是 IPage
IPage 是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到 IPage 类中按 ctrl+h,会找到其有一个实现类为Page
。
步骤 1:调用方法传入参数获取返回值
步骤 2:设置分页拦截器
这个拦截器 MP 已经为我们提供好了,我们只需要将其配置成 Spring 管理的 bean 对象即可。
这个地方 @Configuration 可以让引导类直接扫描到。当然也可以在引导类里面使用 @Import 来引入这个配置类。
说明:上面的代码记不住咋办呢?
这些内容在 MP 的官方文档中有详细的说明,我们可以查看官方文档类配置
步骤 3:运行测试程序
如果想查看 MP 执行的 SQL 语句,可以修改 application.yml 配置文件,
打开日志后,就可以在控制台打印出对应的 SQL 语句,开启日志功能性能就会受到影响,调试完后记得关闭。
版权声明: 本文为 InfoQ 作者【fake smile by】的原创文章。
原文链接:【http://xie.infoq.cn/article/f7e4b7e394b976188b2258494】。未经作者许可,禁止转载。
评论