网站开发中网页之间的连接形式,个人网站建设的计划书,企业管理软件选型要注意哪些因素,广告平面设计工作内容前言
早就知道MybatisPlus对分页进行了处理#xff0c;但是一直没有实战用过#xff0c;用的是自己封装的一个分页组件#xff0c;虽不说麻烦吧#xff0c;但是也不是特别简单。
写起来还是比较复杂#xff0c;但是最近这个组件有了点小小的bug#xff0c;我决定是时候…前言
早就知道MybatisPlus对分页进行了处理但是一直没有实战用过用的是自己封装的一个分页组件虽不说麻烦吧但是也不是特别简单。
写起来还是比较复杂但是最近这个组件有了点小小的bug我决定是时候放弃它了毅然加入光荣的进化。
然后我就去摸索使用MybatisPlus封装的分页组件不用不知道一用吓一跳。不得不说是真香啊功能强大且使用简单
吹了这么多下面就简单下如何使用MybatisPlus实现分页效果
简单说明
核心代码其实就这几行 PageProjectBiddVO page new Page(pageNo,pageSize);IPageProjectBiddVO projectBiddVOS projectBiddService.queryListInfo(page,projectBiddvo);Page就是根据当前页数和显示条数得到的一个结果集 其中IPage 是分页的关键将我们需要分页的条件用Page处理即可达到分页效果。
可以看到有很多里面方法 代码实现
实现起来特别简单两行代码即可 两个参数pageNo和pageSize分别是limit的两个参数对应当前页和每页条数 下面是相关的代码供大家参考
controller
这样写有一个问题就是如果不传pageNo和pageSize会空指针报错 在controller中前两个参数是必传的,一般后面那个参数是实体然后将pageNo和pageSize转换为IPage对象后面只需要传IPage参数和业务参数了如果只写实现分页只传IPage就够了。 ApiOperation(value 招投标项目-自定义列表查询, notes 招投标项目-自定义列表查询)GetMapping(value /queryListInfo)public Result? queryListInfo(Integer pageNo,Integer pageSize,ProjectBiddVO projectBiddvo) {PageProjectBiddVO page new Page(pageNo,pageSize);IPageProjectBiddVO projectBiddVOS projectBiddService.queryListInfo(page,projectBiddvo);return Result.OK(projectBiddVOS);}接口测试 想要优化这个问题也很简单可以给这两个参数默认值防止空指针
也可以通过if判断参数是否为空是空的话赋值
这里我选择前者因为我觉得更简单 ApiOperation(value 招投标项目-自定义列表查询, notes 招投标项目-自定义列表查询)GetMapping(value /queryListInfo)public Result? queryListInfo(RequestParam(name pageNo, defaultValue 1) Integer pageNo,RequestParam(name pageSize, defaultValue 10) Integer pageSize,ProjectBiddVO projectBiddvo) {PageProjectBiddVO page new Page(pageNo,pageSize);IPageProjectBiddVO projectBiddVOS projectBiddService.queryListInfo(page,projectBiddvo);return Result.OK(projectBiddVOS);}再来运行一下吧这次就算不传参也是不会报错的 不传当前页数默认就是指定的默认值喽传的话就按照传的值去分页
通过日志可以发现其实也是先去count了一下总条数再进行分页处理的 service IPageProjectBiddVO queryListInfo(PageProjectBiddVO page, ProjectBiddVO projectBiddVO);serviceImpl
public IPageProjectBiddVO queryListInfo(PageProjectBiddVO page, ProjectBiddVO projectBiddVO) {return projectBiddMapper.queryListInfo(page,projectBiddVO);
}mapper(dao) IPageProjectBiddVO queryListInfo(PageProjectBiddVO page,Param(projectBiddVO) ProjectBiddVO projectBiddVO);mapper(dao).xml
关于xml文件不用我们手动指定limit的条件了改怎么写就怎么写就好MybatisPlus会根据我们的sql查询结果进行分页处理
例如我写的是 selectid,province,city,county,concat(province,city,county) as area,business_code_dic,section_status_dic,project_bidd_code,project_bidd_name,deposit_amount,bidder,open_bidd_time,margins_End_time,del_flag,remarkfromesgs_project_biddwheredel_flag 0 and open_bidd_time gt; now() and section_status_dic0if testprojectBiddVO.projectBiddName!null and projectBiddVO.projectBiddName!and project_bidd_name#{projectBiddVO.projectBiddName}/ifif testprojectBiddVO.projectBiddCode!null and projectBiddVO.projectBiddCode!and project_bidd_code#{projectBiddVO.projectBiddCode}/ifif testprojectBiddVO.bidder!null and projectBiddVO.bidder!and bidder#{projectBiddVO.bidder}/ifif testprojectBiddVO.openBiddStartTime ! null and projectBiddVO.openBiddStartTime ! and open_bidd_time gt; #{projectBiddVO.openBiddStartTime}/ifif testprojectBiddVO.openBiddStopTime ! null and projectBiddVO.openBiddStopTime ! and open_bidd_time lt; #{projectBiddVO.openBiddStopTime}/if/whereif testprojectBiddVO.area!null and projectBiddVO.area!having area like concat(#{projectBiddVO.area}, %)/if/select解决报错
如果遇到下面啊这个报错信息 com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can’t found IPage for args! 出现这个错误大概率是因为 我们想要使用分页且把返回值定义成了IPage 但是没有把page对象传入到mapper中。且要把这个page放到第一个参数。 错误演示 正确演示 总结
使用起来简单且强大真香