pageHelper插件
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
相关三层架构与之前相同,默认增删改查方法,后续特殊方法再进行补充
SQL语句
<select id="pageQuery" resultType="com.itheima.vo.EmpVo">
select e.*,d.name deptName
from emp e left join dept d on e.dept_id = d.id
<where>
<if test="name!=null"> and e.name like concat('%',#{name},'%')</if>
<if test="gender!=null">and e.gender = #{gender}</if>
<if test="begin!=null and end!=null">
and e.entry_date between #{begin} and #{end}
</if>
</where>
order by e.update_time desc
</select>
接收(dto)和返回(vo)类型
接收与返回的数据类型与pojo中定义的类并不完全一致,需要创建新的类对数据进行封装
package com.itheima.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmpQueryDto {
private String name;
private Integer gender;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String begin;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String end;
private Integer page;
private Integer pageSize;
}
package com.itheima.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmpVo {
private Integer id;
private String username;
private String password;
private String name;
private Integer gender;
private String phone;
private Integer job;
private Integer salary;
private String image;
private LocalDate entryDate;
private Integer deptId;
private String deptName;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
服务层代码
package com.itheima.service.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.common.PageBean;
import com.itheima.dto.EmpQueryDto;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.service.EmpService;
import com.itheima.vo.EmpVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
EmpMapper empMapper;
@Override
public PageBean pageQuery(EmpQueryDto dto) {
PageHelper.startPage(dto.getPage(),dto.getPageSize());
Page<EmpVo> page = empMapper.pageQuery();
long total = page.getTotal();
List<EmpVo> list = page.getResult();
return new PageBean(total,list);
}
}
控制层代码
package com.itheima.controller;
import com.itheima.common.PageBean;
import com.itheima.common.R;
import com.itheima.dto.EmpQueryDto;
import com.itheima.pojo.Emp;
import com.itheima.service.ServiceImpl.EmpServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/emps")
@RestController
public class EmpController {
@Autowired
EmpServiceImpl empService;
@GetMapping
public R pageQuery(EmpQueryDto dto){
PageBean pageBean = empService.pageQuery(dto);
return R.ok(pageBean);
}
}
响应的数据类型为三层
//Result层
code
mag
data{ //PageBean
total
rows{ //Vo
id
username
......
}
}