1.原生查询
1.1创建分页查询实体类
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
    private Long total; //总记录数
    private List rows;  //数据列表
}
 
1.2编写控制类
package com.itheima.controller;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
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;
/**
 * 员工管理Controller
 */
//开启日志
@Slf4j
@RestController
public class EmpController {
    @Autowired
    private 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) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;
        log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);
        PageBean pageBean = empService.page(page, pageSize);
//        ,name, gender, begin, end
        return Result.success(pageBean);
    }
}
 
1.3接口
package com.itheima.service;
import com.itheima.pojo.PageBean;
/**
 * 员工管理
 */
public interface EmpService {
    //    分页查询
    PageBean page(Integer page, Integer pageSize);
//    , String name, Short gender, LocalDate begin, LocalDate end
}
 
1.4实现接口类
package com.itheima.service.impl;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;
        @Override
    public PageBean page(Integer page, Integer pageSize) {
//        获取总记录数
        Long count = empMapper.count();
//        分页查询结果列表
//        起始索引计算
        Integer startIndex = (page - 1) * pageSize;
        List<Emp> empList = empMapper.page(startIndex, pageSize);
//        封装PageBean对象
        PageBean pageBean = new PageBean(count, empList);
        return pageBean;
    }
//    @Override
//    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
    1.设置分页参数
//        PageHelper.startPage(page, pageSize);
    2.执行查询
//        List<Emp> empList = empMapper.list(name, gender, begin, end);
        将empList强转为Page类型
        Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。
//        Page<Emp> p=(Page<Emp>) empList;
        封装PageBean对象
//        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
//
//        return pageBean;
//    }
}
 
1.5 mapper接口类
package com.itheima.mapper;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * 员工管理
 */
@Mapper
public interface EmpMapper {
//    查询总记录数
    @Select("select count(*) from emp")
    public Long count();
//分页查询获取列表数据
    @Select("select * from emp limit #{start},#{pageSize}")
    public List<Emp> page(Integer start,Integer pageSize);
//    员工信息查询
//    @Select("select * from emp")
//    public List<Emp> list();
//    String name, Short gender, LocalDate begin, LocalDate end
}
 
1.6数据库结构

1.7测试接口

1.8 application.properties
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456
#配置mybatis的日志, 指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关 a_column ------> aCloumn
mybatis.configuration.map-underscore-to-camel-case=true
 
2.PageHelper
说明:分页插件提示效率。按条件查询
2.1配置依赖
<!--        配置PageHelper分页插件-->
    <dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
    </dependency> 
2.2 创建分页查询实体类
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
    private Long total; //总记录数
    private List rows;  //数据列表
}
 
2.3编写控制类
package com.itheima.controller;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
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;
/**
 * 员工管理Controller
 */
//开启日志
@Slf4j
@RestController
public class EmpController {
    @Autowired
    private 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) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;
        log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);
        PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
//       
        return Result.success(pageBean);
    }
}
 
2.4接口
package com.itheima.service;
import com.itheima.pojo.PageBean;
import java.time.LocalDate;
/**
 * 员工管理
 */
public interface EmpService {
    //    分页查询
    PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
//
}
 
2.5实现接口类
package com.itheima.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;
//        @Override
//    public PageBean page(Integer page, Integer pageSize) {
        获取总记录数
//        Long count = empMapper.count();
        分页查询结果列表
        起始索引计算
//        Integer startIndex = (page - 1) * pageSize;
//        List<Emp> empList = empMapper.page(startIndex, pageSize);
        封装PageBean对象
//        PageBean pageBean = new PageBean(count, empList);
//
//        return pageBean;
//    }
    @Override
    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
//
//    1.设置分页参数
        PageHelper.startPage(page, pageSize);
//    2.执行查询
        List<Emp> empList = empMapper.list(name, gender, begin, end);
//
//        将empList强转为Page类型
//        Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。
        Page<Emp> p=(Page<Emp>) empList;
//        封装PageBean对象
        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
        return pageBean;
    }
}
 
2.6mapper接口类
package com.itheima.mapper;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDate;
import java.util.List;
/**
 * 员工管理
 */
@Mapper
public interface EmpMapper {
//    查询总记录数
//    @Select("select count(*) from emp")
//    public Long count();
//分页查询获取列表数据
//    @Select("select * from emp limit #{start},#{pageSize}")
//    public List<Emp> page(Integer start,Integer pageSize);
//    员工信息查询
    @Select("select * from emp")
    public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
//
}
 
2.7测试接口

2.8项目结构




















