MyBatisPlus分页查询,删除操作
分页查询
分页查询在网页使用十分之多
- 原始的limit进行分页
- 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);
}
分页查询
分页查询在网页使用十分之多
- 原始的limit进行分页
- pageHelper第三方插件
- 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)
管理员可以查看被删除的记录!防止数据丢失,类似于回收站
测试一下:
- 在数据库表中添加一个字段
- 在实体类中也添加一个字段
- 配置
#配置日志
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分页查询,删除操作的更多相关文章
- mybatis-plus分页查询
在springboot中整合mybatis-plus 按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <depe ...
- 关于 MyBatis-Plus 分页查询的探讨 → count 都为 0 了,为什么还要查询记录?
开心一刻 记得上初中,中午午休的时候,我和哥们躲在厕所里吸烟 听见外面有人进来,哥们猛吸一口,就把烟甩了 进来的是教导主任,问:你们干嘛呢? 哥们鼻孔里一边冒着白烟一边说:我在生气 环境搭建 依赖引入 ...
- 关于asp.net假分页的删除操作的随笔
作为一个新人,上周负责优化一个后台管理系统,遇到一个问题:点击删除按钮之后,页面又回到了第一页. 而我需要达到的效果是:点击了删除按钮之后,原来是那一页,删除后还是在那一页. 由于项目是已经验收了的, ...
- Redis 模糊查询删除操作
创建一条测试 数据 查询 创建:set name xiaoming 查询: get name 1.模糊搜索查询 Redis 模糊搜索 keys * 2.删除指定key : # 删除所有以user开头的 ...
- mybatis-plus 分页查询+ dao层抽象
1.配置文件添加paginationInterceptor @Configuration @MapperScan("fama.cost.*.mapper") public clas ...
- java jdbc 同时操作查询删除操作
Connection conn = null; try { // 创建连接实例 conn = JdbcUtility.GetFactory() ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- Mybatis-plus之RowBounds实现分页查询
物理分页和逻辑分页 物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit. 逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据. 优缺点 物理 ...
随机推荐
- 导出Telegram贴纸
如何导出Telegram的贴纸1.在Telegram中 @StickerSetBot 机器人2.输入 /newpack 开启机器人,会提示 OK now send me stickers or sti ...
- Shell基本语法---处理海量数据的grep命令
grep命令 shell脚本三剑客之一 grep应用场景:通常对数据进行 行的提取 语法:grep [选项] [内容] [file] -v 对内容进行取反提取 -n 对提取的内容显示行号 -w 精确匹 ...
- xilinx fpga中块ram的使用——简单双端口ram的使用
在简单双端口ram中最简单有9个端口:分别是 clka 为输入端口的时钟 wea 读写控制端,高为写,低为读 addra 写地址 dina 待写入的数据 clkb 为输出端口的时钟的 addrb ...
- 网络流(dinic算法)
洛谷p3376 https://www.luogu.com.cn/problem/P3376 #include <iostream> #include <cstdio> #in ...
- Split Screen
Split Screen 是一个用来分屏的 bookmarklet 程序. 它通过 javascript 通信协议实现[1]. 特点 使用 HTML5 <dialog> 元素实现 使用 G ...
- vue学习(六) 事件修饰符 stop prevent capture self once
//html <div id="app"> <div @click="divHandler" style="height:150px ...
- 小白入门python新手教程python
python教程很多,但是需要自学教程更好一些,看自学python教程3遍,然后一步步操作,7天后就会有很大的收货. 要向数据处理方向走,数据处理需要网络爬虫的知识,且更加精进.下面是我从网上查找这方 ...
- shell 中的${},##, %% , :- ,:+, ? 的使用
假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2 ...
- lua中单引号和双引号和/的输出的问题
lua单引号和双引号的问题 lua 中的 单引号 与 双引号 (" " 与 '') Lua除支持双引号("")表示字符串外, 也支持用单引号('') 注意: 如 ...
- Day02_IP地址详解&进制转换&DOS基本命令与批处理
学于千峰教育开源课程 感谢 千峰教育官网 b站在线视频 IP地址详解 一.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的局域网的设 ...