idea创建基础项目工程(四)分页查询

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
                ......
            } 
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值