分页查询

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

  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. Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...

  2. How to change the text color in the terminal

    You can open the file ~/.bashrc and then choose the force_color_prompt=yes otherwise, you can change ...

  3. [Antd-vue] Warning: You cannot set a form field before rendering a field associated with the value.

    在用ant-design-vue的框架中,使用到了这种场景,就是点击编辑按钮,弹出modal模态框,渲染modal模态框中的form表单页面,并给表单赋值,但是在给表单赋值的时候,总是会报错. 错误提 ...

  4. RAC环境上搭建DG

    首先RAC要确实是开归档的状态archive log list;如果是非归档状态,需要执行下面几步srvctl stop database -d +数据库实例名 关闭数据库--节点1(要做DG主库的) ...

  5. swfupload控件文件上传大小限制设置

    swfupload控件,是我在开发过程中用到的上传文件的控件,非常实用和方便.但最近碰到一些问题,解决之后进行一下整理. 因为用户上传文件的大小限制增加,导致原本上传控件时,文件的大小需要进行调整和限 ...

  6. 当小程序遇见物联网IoT,几行代码搞定智能插座控制

    在 5G 热潮的推动下,与其紧密结合的物联网(IoT)正日益成为个人和企业工作生活中的重要组成部分,它为企业和个人带来了操作流程的改进和更好的生活体验,随着人工智能(AI)技术的日趋成熟,IoT 与 ...

  7. 设计模式:state模式

    核心: 把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化 例子: class State //状态接口 { public: virtual void show() = 0; ...

  8. C++语法小记---类型检测

    类型检测 C++使用typeid关键字进行类型检查 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意 也可以使用虚函数,返回各自的类型名 如果typeid的操作数不是类类型(类指针也 ...

  9. 04 CMD规范基础使用详解

    CMD模块规范 1.1 CMD规范说明 专门用于浏览器端,并且模块的加载是异步的,而且只有模块使用时才会加载执行: CMD规范的语法类似于Commonjs + AMD --定义模块使用AMD语法,暴露 ...

  10. 【转载】基于dom的一些前端漏洞

    最直接的xss --dom xss function trackSearch(query) { document.write('<img src="/resources/images/ ...