springBoot中实现分页查询

该文章展示了如何在JavaSpringBoot应用中使用MyBatis进行分页查询。首先创建了用于请求和响应的实体类,接着在Controller层定义接口处理请求,Service层调用DAO层实现分页查询功能,最后在DAO层使用MyBatis的PageHelper插件并编写SQL查询语句来完成分页查询。
摘要由CSDN通过智能技术生成

分页查询功能

1.创建实体类

1.根据需求创建请求实体类


/**
 *分页查询
 */
@Data
public class InquirySheetQueryPageVo {
    @ApiModelProperty(notes = "询价单号")
    private Integer requestForQuotationId;//询价单号
    @ApiModelProperty(notes = "法人id")
    private Integer legalPersonId;//法人id
    @ApiModelProperty(notes = "询价日期")
    private Date createTime;
    @ApiModelProperty(notes = "创建开始日期")
    private Date createStartTime;
    @ApiModelProperty(notes = "创建结束日期")
    private Date createEndTime;
    @ApiModelProperty(notes = "询价开始日期")
    @NotNull(message = "询价开始日期为空")
    private Date startTime;
    @ApiModelProperty(notes = "询价结束日期")
    @NotNull(message = "询价结束日期为空")
    private Date endTime;
    @ApiModelProperty(notes = "供应商编码")
    private String vendor;
    @ApiModelProperty(notes = "询价状态")
    private Integer inquiryStatus;
    @ApiModelProperty(notes = "询价类型")
    private Integer type;

    private Integer pageIndex;
    private Integer pageSize;
}

创建要响应的实体类

/**
 * 分页查询返回类型
 */
@Data
public class InquirySheetQueryPageFanVo {
    private Integer totalPage;//总页数
    private Integer totalNumber;//总条数
    private List<InquirySheetQueryPageFansVo> dataList;//数据
    
}

2.controller层代码

@RestController
@RequestMapping("/inquiryList")
@Api(value="SwaggerController" ,description="询价清单模块")
@CrossOrigin//支持跨域
public class InquirySheetController {
//    注入
    @Autowired
    private InquirySheetService inquirySheetService;
    //    分页查询
    @PostMapping("/search")
    @ApiOperation("分页查询")
    public ResultVo queryPage(@RequestBody InquirySheetQueryPageVo inquirySheetQueryPageVo) {
        System.out.println(inquirySheetQueryPageVo);

        List<InquirySheetQueryPageFansVo> lists=inquirySheetService.queryPage(inquirySheetQueryPageVo);

         //        使用pageInfo中的方法,内部封装了我们所有的数据
        PageInfo<InquirySheetQueryPageFansVo> pageInfo=new PageInfo<>(lists);

        InquirySheetQueryPageFanVo inlist=new InquirySheetQueryPageFanVo();

        inlist.setTotalNumber(pageInfo.getPageSize());
        inlist.setTotalPage(pageInfo.getPages());
        inlist.setDataList(lists);

        return ResultPlsVo.success(inlist);
    }
    }

2.service层代码–接口实现类

@Service
public class InquirySheetServiceImpl implements InquirySheetService {
    @Autowired
    private InquirySheetDao inquirySheetDao;

    //    首页的分页查询
    @Override
    public List<InquirySheetQueryPageFansVo> queryPage(InquirySheetQueryPageVo inquirySheetQueryPageVo) {
        //使用分页插件功能、Mapper接口方式的调用,推荐这种使用方式。
        Integer pageSize =inquirySheetQueryPageVo.getPageSize();//每页显示条数
        Integer pageIndex=inquirySheetQueryPageVo.getPageIndex();//当前页
//        参数1:当前页,参数2:每页条数
//        注意:在查询之前使用
        PageHelper.startPage(pageIndex,pageSize);
        List<InquirySheetQueryPageFansVo> lists=inquirySheetDao.queryPage(inquirySheetQueryPageVo);
        return lists;
    }
    }

3.dao层代码


@Mapper
public interface InquirySheetDao {
//    首页分页查询

    List<InquirySheetQueryPageFansVo> queryPage(InquirySheetQueryPageVo inquirySheetQueryPageVo);
    }

4.xml中的sql语句

<?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.xyh.inquiry.dao.InquirySheetDao">
<!-- 
namespace:接口的包路径名称
id:接口中对应的方法名称
resultType:返回的数据类型
parameterType:接收的数据类型
 -->
 <!--    首页分页查询-->
    <select id="queryPage" resultType="com.xyh.inquiry.domain.InquirySheet.InquirySheetQueryPageFansVo">
        select xt.id,xt.requestForQuotationId,xt.createTime,xt.startTime,
        xt.endTime,xt.inquiryStatus,zd.name inquiryStatusName,xt.creatorName,le.legalPlantName legalPersonName from legalplant le
        LEFT JOIN xjttable xt on le.id=xt.legalPersonId
        LEFT JOIN legal_supp ls on le.id=ls.legalPersonId
        LEFT JOIN supplier su on su.id=ls.gongyingId
        LEFT JOIN zidian zd on zd.id=xt.inquiryStatus
        <where>

            <if test="legalPersonId !=null">
                and xt.legalPersonId=#{legalPersonId}
            </if>
            <if test="requestForQuotationId !=null">
                and xt.requestForQuotationId=#{requestForQuotationId}
            </if>


            <if test="createStartTime !=null">
                and xt.createStartTime >=#{createStartTime}
            </if>
            <if test="createEndTime !=null">
                and xt.createEndTime &lt;=#{createEndTime}
            </if>


            <if test="startTime !=null">
                and xt.startTime >=#{startTime}
            </if>
            <if test="endTime !=null">
                and xt.endTime &lt;=#{endTime}
            </if>

            <if test="vendor !=null and vendor !=''">
                and su.supplierCode=#{vendor}
            </if>

            <if test="type !=null">
                and xt.type &lt;=#{type}
            </if>

            <if test="inquiryStatus !=null">
                and xt.inquiryStatus &lt;=#{inquiryStatus}
            </if>

        </where>
        GROUP BY xt.requestForQuotationId
        ORDER BY xt.createTime
    </select>
    </mapper>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值