首先是依赖版本:
springboot:2.2.4RELEASE
mybatis-springboot:2.1.4
pageHelper-springboot:1.2.3
先上初始代码,springBoot启动成功,浏览器访问selectAll,sql语句报错,sql末尾多了个limt,
变成了:SELECT *FROM department;limt
@ResponseBody
@RequestMapping("selectAll")
public PageInfo<Department> selectAll() {
PageHelper.startPage(1,2);
List<Department> departments = departmentService.selectAll();
PageInfo<Department> pageInfo=new PageInfo<>(departments);
System.out.println("pageInfo = " + pageInfo);
return pageInfo;
}
//xml文件中sql语句为
<select id="selectAll" resultType="cn.springboot.demo10.entity.Department">
SELECT *FROM department;
</select>
网上查了下,因为上一个线程的pageHelper启动后未消费,被当前线程使用,末尾会多一个limt;但是我整个项目就这一个controll,内部也只有这个方法,按理来说不会出现这种情况;最后解决是通过在pageHelper.start()后pageHelper.clearPage(),最后运行成功;
@ResponseBody
@RequestMapping("selectAll")
public PageInfo<Department> selectAll() {
PageHelper.startPage(1,2);
PageHelper.clearPage();//不知道为什么线程会被污染;
List<Department> departments = departmentService.selectAll();
PageInfo<Department> pageInfo=new PageInfo<>(departments);
System.out.println("pageInfo = " + pageInfo);
return pageInfo;
}