当前位置: 首页 > article >正文

Springboot 练习

        Springboot练习——分页查询

        Emp类

package com.wzb.pojo20240930;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

        查询封装的PageBean类

package com.wzb.pojo20240930;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

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

         查询返回的Result类

package com.wzb.pojo20240930;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code; // 响应码,1是响应成功,2是响应失败
    private String message; // 响应信息,描述响应结果的字符串
    private Object data; // 响应返回的数据

    // 响应成功,但不返回数据的方法
    public static Result success() {
        return new Result(1, "success", null);
    }
    // 响应成功,并且返回数据的方法
    public static Result success(Object data) {
        return new Result(1,"success", data);
    }
    // 响应失败的方法
    public static Result fail(String message) {
        return new Result(0, message, null);
    }
}

        Controller

package com.wzb.controller;

import com.wzb.pojo20240930.Emp;
import com.wzb.pojo20240930.PageBean;
import com.wzb.pojo20240930.Result;
import com.wzb.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;
import java.util.List;

@RestController
public class EmpController {
    @Autowired
    private EmpService empService;

    @GetMapping("/emps")
    // @RequestParam接收前端传递的想要查询的页数和每一页的记录数
    public Result pageSelect(@RequestParam(defaultValue = "1") Integer page,
                                @RequestParam(defaultValue = "10") Integer pageSize,
                                String name, Short gender,
    // 因为Http请求的路径全部都是字符串,所以说要用@DateTimeFormat注解并限定其格式将String解析为LocalDate
                                @DateTimeFormat(pattern = ("yyyy-MM-dd")) LocalDate begin,
                                @DateTimeFormat(pattern = ("yyyy-MM-dd")) LocalDate end) {
        // 日志记录
        System.out.println("进行了一次条件查询");
        // 通过Service层,操作数据库,并将查询的数据封装到PageBean中返回
        PageBean pageBean = empService.pageSelect(page, pageSize, name, gender, begin, end);
        return Result.success(pageBean);
    }


}

        Service

package com.wzb.service;

import com.wzb.pojo20240930.Emp;
import com.wzb.pojo20240930.PageBean;

import java.time.LocalDate;
import java.util.List;

public interface EmpService {

    PageBean pageSelect(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
}

        实现类

package com.wzb.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.wzb.mapper.EmpMapper;
import com.wzb.pojo20240930.Emp;
import com.wzb.pojo20240930.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.List;

@Service
public class EmpServiceImplement implements EmpService{

    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean pageSelect(Integer page, Integer pageSize, String name, Short gender,
                               LocalDate begin, LocalDate end) {
        // 使用分页插件
        PageHelper.startPage(page, pageSize);
        // 调用mapper中的方法查询并返回
        List<Emp> empList = empMapper.pageSelect(name, gender, begin, end);
        Page<Emp> p = (Page<Emp>) empList;
        return new PageBean(p.getTotal(), p.getResult());
    }
}

        Mapper

 

package com.wzb.mapper;

import com.wzb.pojo20240930.Emp;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface EmpMapper {

    List<Emp> pageSelect(String name, Short gender, LocalDate begin, LocalDate end);
}

        XML配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzb.mapper.EmpMapper">
    <!-- 执行条件分页查询 -->
    <!-- 条件分页查询 -->
    <select id="pageSelect" resultType="com.wzb.pojo20240930.Emp">
        select * from emp
        <where>
            <if test="name != null and name != ''">
                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>
        order by update_time desc
    </select>
</mapper>

 

 

 

 

 


http://www.kler.cn/news/327658.html

相关文章:

  • 第七届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)
  • ubuntu 24.04如何分配内存
  • 前端知识汇总(持续更新)
  • Flask-SQLAlchemy:在Flask应用中优雅地操作数据库
  • 如何利用多线程提高计算密集型任务的性能
  • 计算机网络实验5——静态路由的相关配置
  • 等保测评:如何进行安全的远程访问控制
  • ubuntu 安装neo4j
  • Electrodoc 5.2 专业电工工具集合,支持多种计算器和资料查询!
  • Golang | Leetcode Golang题解之第438题找到字符串中所有字母异位词
  • vue2与vue3知识点
  • 尾矿库安全监测系统:守护矿山安全的关键技术
  • 蛋白质结构中模型的提取
  • CSS 效果:实现动态展示双箭头
  • Android Button “No speakable text present” 问题解决
  • CUDA Dynamic Parallelism测试
  • Django-form表单
  • 【JAVA高级】如何使用Redis加锁和解锁(二)做分布式锁案例(防误删锁)
  • https访问报错:net::ERR_CERT_DATE_INVALLD
  • 【Simulink仿真】两级式三相光伏并网发电系统
  • Linux启动mysql报错
  • 【QT Quick】C++交互:QML对象操作
  • Linux应急响应技巧整理
  • 如何确定光纤用几芯 用光纤与网线区别在哪里
  • TensorRT-LLM高级用法
  • 五子棋双人对战项目(1)——WebSocket介绍
  • ubuntu 开启root
  • 太速科技-FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡
  • LED驱动电路
  • SQL | 查询带有单引号的异常数据和replace与insert插入的区别