分页查询

分页查询在网页使用十分之多

  1. 原始的limit进行分页
  2. pageHelper第三方插件

    3. MP内置的分页插件

导入配置

如何使用,官网的代码如下

 //分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}

当然我们的代码用不了像这些默认500条的值,直接删除即可,简化后的代码如下

  //分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}

怎样分页

直接使用page对象即可

  //测试分页查询
@Test
public void testPage(){
//参数1:当前页
//参数2:页面大小
Page<Air> airPage = new Page<>(1,3);
airMapper.selectPage(airPage,null);
airPage.getCurrent();
airPage.getRecords().forEach(System.out::println);
}

分页查询

分页查询在网页使用十分之多

  1. 原始的limit进行分页
  2. pageHelper第三方插件
  3. MP内置的分页插件

导入配置

如何使用,官网的代码如下

 //分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}

当然我们的代码用不了像这些默认500条的值,直接删除即可,简化后的代码如下

  //分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}

怎样分页

直接使用page对象即可

  //测试分页查询
@Test
public void testPage(){
//参数1:当前页
//参数2:页面大小
Page<Air> airPage = new Page<>(1,3);
airMapper.selectPage(airPage,null);
airPage.getCurrent();
airPage.getRecords().forEach(System.out::println);
}

MP删除操作

基本删除

    //测试删除
@Test
public void testDeleteById(){
System.out.println(airMapper.deleteById(1L));
}

批量删除

  //测试删除
@Test
public void testDeleteBatchId(){
System.out.println(airMapper.deleteBatchIds(Arrays.asList(1,2,3)));
}

根据map删除

  //测试删除
@Test
public void testDeleteByMap(){
HashMap<String,Object> airMap = new HashMap<>();
airMap.put("id",4);
airMap.put("id",5);
System.out.println(airMapper.deleteByMap(airMap));
}

逻辑删除

物理删除: 从数据库中直接移除

逻辑删除: 在数据库中没有被移除,而是通过一个变量让他失效!(deleted = 0 -> deleted = 1)

管理员可以查看被删除的记录!防止数据丢失,类似于回收站

测试一下:

  1. 在数据库表中添加一个字段

  2. 在实体类中也添加一个字段

  3. 配置
#配置日志
mybatis-plus: configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #仅控制台输出的日志
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名,如果实体类上字段加过@TableLogic
# 就不需要配置这个,如果配置了默认也不会读取yml里的,而是属性上的注解
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0

测试删除

实际上逻辑删除就是更新操作

这个时候如果执行查询等操作是无法查询出来的,因为会在查询条件中会自动拼接deleted = 0的条件

    //测试逻辑删除
@Test
public void testDeleteByLogic(){
HashMap<String,Object> airMap = new HashMap<>();
airMap.put("id",4);
System.out.println(airMapper.deleteByMap(airMap));
}

以上所有CRUD(加上我的上一篇)

https://www.cnblogs.com/chougoushi/p/13438912.html"MyBatisPlus配置日志,CRUD的使用"

都是必须要掌握的,多加练习

MyBatisPlus分页查询,删除操作的更多相关文章

  1. mybatis-plus分页查询

    在springboot中整合mybatis-plus 按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <depe ...

  2. 关于 MyBatis-Plus 分页查询的探讨 → count 都为 0 了,为什么还要查询记录?

    开心一刻 记得上初中,中午午休的时候,我和哥们躲在厕所里吸烟 听见外面有人进来,哥们猛吸一口,就把烟甩了 进来的是教导主任,问:你们干嘛呢? 哥们鼻孔里一边冒着白烟一边说:我在生气 环境搭建 依赖引入 ...

  3. 关于asp.net假分页的删除操作的随笔

    作为一个新人,上周负责优化一个后台管理系统,遇到一个问题:点击删除按钮之后,页面又回到了第一页. 而我需要达到的效果是:点击了删除按钮之后,原来是那一页,删除后还是在那一页. 由于项目是已经验收了的, ...

  4. Redis 模糊查询删除操作

    创建一条测试 数据 查询 创建:set name xiaoming 查询: get name 1.模糊搜索查询 Redis 模糊搜索 keys * 2.删除指定key : # 删除所有以user开头的 ...

  5. mybatis-plus 分页查询+ dao层抽象

    1.配置文件添加paginationInterceptor @Configuration @MapperScan("fama.cost.*.mapper") public clas ...

  6. java jdbc 同时操作查询删除操作

    Connection conn = null;        try {            // 创建连接实例            conn = JdbcUtility.GetFactory() ...

  7. 用Hibernate和Struts2+jsp实现分页查询、修改删除

    1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...

  8. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  9. Mybatis-plus之RowBounds实现分页查询

    物理分页和逻辑分页 物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit. 逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据. 优缺点 物理 ...

随机推荐

  1. 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:我年龄的立方是个4位数。 我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。 结果只有一个数。

    #include<stdio.h>int main(){ int age=1; int san=0; int si=0; int sum=0; while(age>0) { san= ...

  2. 各种jar包下载地址

    standard.jar和jstl.jar的下载地址 http://repo2.maven.org/maven2/javax/servlet/jstl/ http://repo2.maven.org/ ...

  3. 又被逼着优化代码,这次我干掉了出入参 Log日志

    本文收录在个人博客:www.chengxy-nds.top,技术资源共享. 最近技术部突然刮起一阵 review 代码的小风,挨个项目组过代码,按理说这应该是件挺好的事,让别人指出自己代码中的不足,查 ...

  4. C++语法小记---如何判断一个变量是不是指针

    如何判断一个变量是不是指针? 思路:模板函数 + 可变参数 + sizeof(函数) #include <iostream> #include <string> using n ...

  5. [日常摘要] -- 阻塞IO与非阻塞IO篇

    NIO操作过程 非阻塞读/写操作 读-- 从通道读取数据到buffer,同时可以继续做别的事情,但数据都到buffer之后,线程再继续处理数据 写-- 一个线程请求写入一些数据到某通道,但不需要等待它 ...

  6. linux命令笔记记录(自用)

    1.解除yum锁定: sudo rm -rf /var/run/yum.pid 2.删除文件夹: rm -rf /var/log/httpd/access 3.更新pip: python -m pip ...

  7. vue+axios+springboot文件下载

    //前台代码 <el-button size="medium" type="primary" @click="downloadFile" ...

  8. ThreadLocal源码分析以及why导致内存泄露

    1 ThreadLocal? This class provides thread-local variables. These variables differ from their normal ...

  9. 面试题三十:包含min函数的栈

    定义一个栈的数据结构,请实现一个每次都能找到栈中的最小元素,要求时间复杂度O(1).意思就是说每次进栈出栈后,min函数总能在时间1的前提下找到.方法一:由于每次循序遍历栈的话时间复杂度为n,所以要想 ...

  10. 像计算机科学家一样思考Python(第2版)|百度网盘免费下载|Python新手入门资料

    像计算机科学家一样思考Python(第2版)|百度网盘免费下载 提取码:01ou 内容简介  · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主 ...