MyBatis Plus从入门到熟练使用(二、中级使用)

前面一节我们进行了MyBatis Plus的入门介绍,并且进行了新增和查询的相关接口介绍和编写,这一节我们继续深入学习MP。

一、自定义SQL

1、自定义SQL语句使用方法

有时候我们使用MP自带的条件构造器满足不了我们的查询条件了,MP也支持我们自定义SQL。但是要求MP的版本大于等于3.0.7!下面我们来实际应用一下。

MyBatis Plus从入门到熟练使用(二、中级使用)_第1张图片

我们首先在Mapper里写一个自定义的接口方法,这里使用注解的方式编写SQL语句,大家可以看到这是一个简单的查询所有信息的SQL语句,然后我们调用这个接口的方法如下图:

MyBatis Plus从入门到熟练使用(二、中级使用)_第2张图片

运行测试一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第3张图片

MyBatis Plus从入门到熟练使用(二、中级使用)_第4张图片

测试成功!

2、自定义SQL条件构造器使用方法

这里如果想要在这个方法里面使用条件构造器该怎么写呢?这里我们在新建一个接口如下图:

MyBatis Plus从入门到熟练使用(二、中级使用)_第5张图片

这里我们自定义了一个Lambda表达式的条件构造器,然后我们写个接口测试一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第6张图片

运行测试一下:

 

MyBatis Plus从入门到熟练使用(二、中级使用)_第7张图片

MyBatis Plus从入门到熟练使用(二、中级使用)_第8张图片

测试成功!

二、分页查询

1、分页配置

首先我们写一个配置文件来配置MP的物理分页插件,代码如下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第9张图片

然后我们来看一下MP所提供的分页接口如下图:

这两个一个返回实体数据信息,一个返回Map信息,下面我们来实践一下!

2、selectPage方法使用

MyBatis Plus从入门到熟练使用(二、中级使用)_第10张图片

这里我们使用selectPage方法,需要传入Page对象和条件构造器,最后返回一个Ipage对象,里面包含下列信息:

MyBatis Plus从入门到熟练使用(二、中级使用)_第11张图片

分别为总记录数,总页数,总数据集,当前页,当前页数据量,下面我们运行一下进行测试!

MyBatis Plus从入门到熟练使用(二、中级使用)_第12张图片

从执行的sql中可以看出执行了两次sql查询,一次是查询记录数的,一次查询具体数据,查询数据的有两个参数0(Long)代表偏移量,2(Long)代表最大返回两条记录。然后可以看到总页数2页,总记录数4个,我们看一下测试结果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第13张图片

果然只返回了两条数据,我们把内页数量调为4测试一下,如下图:

MyBatis Plus从入门到熟练使用(二、中级使用)_第14张图片

MyBatis Plus从入门到熟练使用(二、中级使用)_第15张图片

MyBatis Plus从入门到熟练使用(二、中级使用)_第16张图片

可以看到,现在只有1页了,且这一页4条数据,说明我们测试成功!

3、selectMapsPage方法使用

下面我们再来测试一下返回Map数据的方法,其实和上面类似,只不过返回的是Map对象,如下图所示:

MyBatis Plus从入门到熟练使用(二、中级使用)_第17张图片

运行一下看效果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第18张图片

MyBatis Plus从入门到熟练使用(二、中级使用)_第19张图片

也没问题,只不过返回的数据类型是Map对象,可以按需要取出使用。

4、分页查询优化

这样分页部分基本就讲解完成了,但是还有一个问题就是每次我们的分页查询都是跑了两次SQL语句,当我们不需要查询记录数的时候那系统性能就会有损耗,这里我们来处理一下这个问题。

MyBatis Plus从入门到熟练使用(二、中级使用)_第20张图片

我们加入这一句代码,MP在分页查询时就不会去查询记录数了,运行测试一下:

 MyBatis Plus从入门到熟练使用(二、中级使用)_第21张图片

只执行了查询数据的,没有执行查询总记录数的,说明我们测试成功了!

三、数据修改更新接口开发

前面讲了数据新增、查询的各种接口的开发,这里我们开始介绍数据修改更新接口的开发。

1、根据id进行修改

MyBatis Plus从入门到熟练使用(二、中级使用)_第22张图片

这里我们还是选择json数据格式进行数据传输:

运行看一下效果如下图:

MyBatis Plus从入门到熟练使用(二、中级使用)_第23张图片

测试成功!并且我们看到MP也是可以满足局部更新的,就是你输入什么参数就更新什么值。

2、update方法修改

下面我们来看一下另外一种更新数据的方法update方法:

MyBatis Plus从入门到熟练使用(二、中级使用)_第24张图片

这里我们使用update方法传入了两个参数,一个是实体,一个是条件构造器wrapper,我们看一下执行的sql语句:

我们的条件构造器中的参数在where的位置,实体类中的参数在set位置上,即条件构造器用来设置条件,实体用来设置修改内容。看一下执行结果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第25张图片

测试成功!但是你可能觉得每次都要新建一个实体类比较麻烦,别着急,也有不用新建实体类的方法:

3、不构建实体的修改方法

MyBatis Plus从入门到熟练使用(二、中级使用)_第26张图片

这里我们直接把要set的对象放到了wrapper中,然后在update方法中的实体类位置传入了null,运行测试一下:

也是可以的。我们也可以使用具有防误写功能的Lambda表达式来写,如下图:

4、Lambda条件构造器的修改方法

MyBatis Plus从入门到熟练使用(二、中级使用)_第27张图片

这里我们把名字改为张三三,年龄改为88,运行一下看效果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第28张图片

OK,测试成功!我们也可以使用链式的Lambda条件构造器进行修改,如下图:

5、链式Lambda条件构造器的修改方法

MyBatis Plus从入门到熟练使用(二、中级使用)_第29张图片

运行看一下效果,

这里我们把张三三的年龄修改为18,看一下结果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第30张图片

测试成功!

三、数据删除接口开发

1、根据id删除

首先我们来介绍简单的通过id删除的方法如下图:

MyBatis Plus从入门到熟练使用(二、中级使用)_第31张图片

运行测试一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第32张图片

可以看到数据库中id为1的数据已经被删除了。

2、deleteByMap方法删除

这个跟我们前面的查询时使用的selectByMap类似,传入一个Map对象进行删除,可以满足根据数据库中的某一列或多列信息进行删除,这里我们写代码介绍一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第33张图片

这里我们根据性别进行信息删除,比如我们删除所有的女生信息,运行看一下效果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第34张图片

显示删除了两条信息,看一下sql语句:

再看一下数据库验证一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第35张图片

测试成功,所有的女生信息都已经被删除了。

3、deleteBatchIds方法删除

这个方法和我们前面使用的批量查询功能也是类似的,只不过我们这儿是批量删除,写代码测试一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第36张图片

这里我们以传入两个id进行删除为例进行讲解,运行看一下效果:

MyBatis Plus从入门到熟练使用(二、中级使用)_第37张图片

这里我们把id为2,3的数据删除了,最后去数据库验证一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第38张图片

测试成功!

4、带条件构造器的删除方法

MyBatis Plus从入门到熟练使用(二、中级使用)_第39张图片

运行测试一下:

MyBatis Plus从入门到熟练使用(二、中级使用)_第40张图片

再去数据库中验证一下:

测试成功!

这样我们结合上一篇文章已经使用MP把增删改查的所有接口都写完了!

这一节就先暂时介绍到这儿!

 

 

 

 

 

 

 

你可能感兴趣的:(java,springboot框架)