Day10案例分页查询,条件查询

 对要求进行逻辑分析,传递固定参数{page,pagesize}+任意参数{name,gender,begin,end},返回总记录数以及当前页码的记录

不使用pagehelper插件,首先完成SQL语句

SQL语句

//固定头
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yhw.mapper.EmpMapper">//定义一个sql语句等效于这个select,from,多次使用的时候会使页面更加简洁<sql id="commonSelect">select id,username,password,name,gender,image,job,entrydate,dept_id,create_time,update_timefrom emp</sql>//第一个select语句,对应函数名是page,返回类型是Emp<select id="page" resultType="com.yhw.pojo.Emp"><include refid="commonSelect"/><where>//where完成自动and判重,if完成自动变量判空<if test="name != null">name like concat('%',#{name},'%')//这是上节课jiangly的模糊查询,查询带张的名</if><if test="gender != null">and gender =#{gender}</if><if test="begin != null and end != null">and entrydate between #{begin} and #{end}</if></where>//按更新时间降序order by update_time desclimit #{start},#{pageSize}//如果你使用了mybatisX插件,这里会爆红,不用管它是正常的</select>//完成总记录数的查询<select id="count" resultType="Long">select count(*)from emp<where><if test="name != null">name like concat('%',#{name},'%')</if><if test="gender != null">and gender =#{gender}</if><if test="begin != null and end != null">and entrydate between #{begin} and #{end}</if></where></select>
</mapper>

Contoller

接下来完成Conroller层

@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize, String name, Short gender,@DateTimeFormat(pattern="yyyy-MM-dd")LocalDate begin,@DateTimeFormat(pattern="yyyy-MM-dd")LocalDate end){log.info("分页查询,参数:{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);PageBean pageBean=empService.page(page,pageSize, name, gender, begin, end);return Result.success(pageBean);}
}

根据接口文档,我们使用Get方法,接收6个参数,page和pageSize使用@RequestParam设置默认值,这个PageBean要根据文档定义,是个类来的

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total;private List rows;
}

使用注解简化书写,总记录数和总记录集合

下面完成EmpService

EmpService

@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {Long count=empMapper.count(name,gender, begin, end);List<Emp> list= empMapper.page((page-1)*pageSize,pageSize,name,gender, begin, end);PageBean pageBean=new PageBean(count,list);return pageBean;}
}

这是实现,接口自己cv一下就好了,调用count方法拿到总记录数,page方法拿到集合

EmpMapper就很简单了

EmpMapper

Long count(String name, Short gender, LocalDate begin, LocalDate end);List<Emp> page(Integer start, Integer pageSize,String name, Short gender, LocalDate begin, LocalDate end);

我们在xml里面都写好了,已经自动映射了.

点击查询按钮,查询成功. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641720.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu16安装docker及docker-compose

ubuntu16安装docker及docker-compose 一、环境前期准备 检查系统版本 系统版本最好在16及以上&#xff0c;可以确保系统的兼容性 lsb_release -a查看内核版本及系统架构 建议用 x86_64的系统架构&#xff0c;安装是比较顺利的 uname -a32的系统不支持docker&#xff0c;安…

蓝卓生态说 | 沙塔刘二腾:数据采集是工业实现数字化的基础

成功的产品离不开开放式创新和生态协同的力量。近年来&#xff0c;蓝卓坚持“平台生态"战略&#xff0c;不断加码生态&#xff0c;提出三个层次的开源开放生态计划&#xff0c;举办"春风行动”、"生态沙龙"等系列活动&#xff0c;与生态伙伴共生、共创、共…

智慧水务是什么样的?如何打造智慧水务大屏?

在信息化和数字化快速发展的今天&#xff0c;智慧水务作为城市供水管理的重要组成部分&#xff0c;正变得越来越重要。智慧水务大屏作为智慧水务系统的可视化核心&#xff0c;不仅提升了水务管理的效率&#xff0c;而且通过数据的实时监控和分析&#xff0c;为决策者提供了强有…

模拟BACnet设备(八)

文章目录 前言模拟呼梯设备的功能前期准备——xml文件的编写创建工程&#xff0c;建立BACnet模拟设备如何将设备的对象列表打包发送呢&#xff1f;被订阅的属性值变化时&#xff0c;如何主动通知对方&#xff1f;读写属性值完整代码小结 前言 前面一到七篇&#xff0c;从理论&…

IDEA 使用Debug时IOC容器内容有序排列

勾选后如下图所示便会按照首字母进行排列

C++ 面向对象-封装

C 是一种多范式编程语言&#xff0c;它支持面向对象编程&#xff08;OOP&#xff09;范式。面向对象编程是一种程序设计思想&#xff0c;其中程序由对象组成&#xff0c;每个对象都是一个实例&#xff0c;具有数据和相关操作。在C中&#xff0c;实现面向对象编程主要通过类和对…

C#-使用Harmony库实现DLL文件反射调用

一. Harmony工作原理 利用C#运行时Runtime的反射机制,动态加载dll中的方法,字段,属性,实现对DLL方法的重写和代码注入。 二. Harmony下载及安装 1.下载Harmony_lib库lib.harmony.2.3.3.nupkg 霸王•吕布 / CSharpHarmonyLib GitCodehttps://gitcode.net/qq_35829452/csharph…

yolov8 裁剪检测结果

yolov8 裁剪检测结果 1. 基础2. 图片批量裁剪2.1 检测裁剪2.2 分割裁剪 3. 视频裁剪3.1 检测裁剪3.2 分割裁剪3.3 实时裁剪 4. 源码 1. 基础 本项目是在 WindowsYOLOV8环境配置 的基础上实现的 思路&#xff1a;将检测得到的物体边框提取&#xff0c;然后边框裁剪原图&#xf…

锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测 Matlab基于GRU的锂电池剩余寿命预测 基于GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2020及以上 锂电池的剩余寿命预测是…

设计模式学习笔记 - 开源实战四(中):剖析Spring框架中用来支持扩展的设计模式

概述 上篇文章&#xff0c;学习了 Spring 框架背后蕴含的设计思想&#xff0c;比如约定优于配置、低侵入松耦合、模块化轻量级等等。这些设计思想可以借鉴到其他框架开发中&#xff0c;在大的设计层面提高框架的代码质量。 除了上篇文章降到的设计思想&#xff0c;实际上&…

C++——类和对象练习(日期类)

日期类 1. 构造函数和析构函数2. 拷贝构造和赋值运算符重载3. 运算符重载3.1 日期的比较3.2 日期加减天数3.3 日期减日期3.4 流插入和流提取 4. 取地址和const取地址重载5. 完整代码Date.hDate.c 对日期类进行一个完善&#xff0c;可以帮助我们理解六个默认成员函数&#xff0c…

【黑马头条】-day12项目部署和发布-jenkins

文章目录 1 持续集成2 软件开发模式2.1 瀑布模式2.2 敏捷开发2.2.1 迭代开发2.2.2 增量开发 3 Jenkins3.1 Jenkins安装3.1.1 导入镜像3.1.2 配置3.1.3 初始化设置 3.2 插件安装3.3 服务器环境准备3.3.1 Docker安装配置3.3.2 Git安装配置3.3.3 Maven安装配置 3.4 Jenkins工具配置…