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);
//
}