今天写代码遇到了一个特别的傻逼的问题,那就是我在使用springboot3的时候,使用pagehelper进行分页设置的时候,总是不生效,我非常纳闷我检查了maven 的依赖,application.yml的配置文件,感觉都是没有问题但是分页插件的效果却总是不出来,后来通过我的老师的排查,发现是我的maven版本不对,我用的版本是1.3.0版本的pagehelper的mavend的依赖,但是这个版本pagehelper是不支持springboot3的,于是我在找到github上找到适合springboot3pagehelper的插件坐标
用了这个版本的插件立刻就能用了,
这个是我的application.yml配置文件:
也顺便给大家看一下完整的mybaties使用分页插件的流程献丑;
mapper层的代码:
package com.gfxy.myapp.mapper;
import com.gfxy.myapp.pojo.MyApp;
import org.apache.catalina.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
@Mapper
public interface MyAppMapper {
// @Select("select * from my_app")
public List<MyApp> list();
@Insert("insert into my_app values (#{id},#{name},#{addr},#{age},#{birth},#{sex})")
public void add(MyApp myApp);
@Delete("delete from my_app where id = #{id} ")
public void del(String id);
public void update(MyApp myApp);
@Select("select * from my_app where id =#{id}")
public MyApp getMyAppId(String id);
}
这个是service上实现的代码
package com.gfxy.myapp.service;
import com.gfxy.myapp.pojo.MyApp;
import com.github.pagehelper.Page;
import org.apache.catalina.User;
import java.util.List;
public interface MyAppService {
public void del(String id);
public void add(MyApp myApp);
public Page<MyApp> list(int pageNum, int pageSize);
public void update(MyApp myApp);
public MyApp getMyApp(String id);
}
其实现类:
package com.gfxy.myapp.service.Impl;
import com.gfxy.myapp.mapper.MyAppMapper;
import com.gfxy.myapp.pojo.MyApp;
import com.gfxy.myapp.service.MyAppService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public class MyAppServiceImpl implements MyAppService {
@Autowired
MyAppMapper myAppMapper;
@Override
public void del(String id) {
myAppMapper.del(id);
}
@Override
public void add(MyApp myApp) {
String string = UUID.randomUUID().toString();
myApp.setId(string);
myAppMapper.add(myApp);
}
@Override
public Page<MyApp> list(int pageNum, int pageSize) {
//设置分页查询的参数属性
PageHelper.startPage(pageNum,pageSize);
List<MyApp> list = myAppMapper.list();
Page<MyApp> pageInfo = (Page<MyApp>) list;
return pageInfo;
}
@Override
public void update(MyApp myApp) {
myAppMapper.update(myApp);
}
@Override
public MyApp getMyApp(String id) {
return myAppMapper.getMyAppId(id);
}
}
最后在controller类返回前端的代码
@GetMapping("/getUser/{pageNum}/{pageSize}")
public PageBean getUsers(@PathVariable(value = "pageNum") int pageNum,
@PathVariable(value = "pageSize") int pageSize) {
log.info("已被访问,{},{}", pageNum, pageSize);
Page<MyApp> page = myAppService.list(pageNum, pageSize);
pageBean = new PageBean();
pageBean.setTotal(page.getTotal());
pageBean.setRoews(page.getResult());
pageBean.setMyApps(page.getResult());
// 返回JSON格式的结果给前端
return pageBean;
}
最后前端收到的数据:
其实在springboot中使用pagehelper是特别简单的,我们在maven引入合适版本的依赖后,在配置文件中写好配置,在service的实现类中就可以编写代码了,
pagehelper使用的时候在在mapper查询语句的上面PageHelper.startPage(pageNum,pageSize);这个就是设置分页查询的代码了,其中pageNum参数是设置查询第几页的数据集,pageSize是设置一页有多少条数据,这两个参数通常是前端传给后端contronler层参数在通过contronller层传递给setrvice实现类中的,通过分页查询大大的简化了编写数据库sql查询语句的繁杂,不过要注意的是设置完分页属性的条件后是只对第一次mapper Sql语句查询是有效的所以在开发的时候要注意,