多年不用PageHelper了,最近新入职的公司,采用了此工具集成的框架,作为一个独立紧急项目开发的基础。项目开发起来,还是手到擒来的,但是没想到,最终测试的时候,深深的给我上了一课。
我的项目发生了哪些奇葩现象?
一切的问题都要从我接受的项目开始说起, 在开发这个项目的过程中,发生了各种奇葩的事情, 下面我简单说给你们听听:
你肯定在想这是什么意思? 就是字面意思,已经注册的账号,可以再次注册成功!!!
else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))
||"匿名用户".equals(username)){
// 注册用户已存在
msg = "注册用户'" + username + "'失败";
}
如上所示: checkUserNameUnique(username)
用来验证数据库是否存在用户名:
正常来说,是不会有问题的,那么原因我们后面讲,接着看下一个问题。
如上所示,明明有十多个结果,怎么只能返回5个?我也没有添加分页参数啊?
相信用过PageHelper的同学已经知道问题出在哪里了。
当管理员在后台界面重置用户的密码的时候,居然报错了?
报错信息清晰的告诉了我:sql语句异常,update语句不认识 “Limit 5”
到此为止,报错信息已经告诉了我,我的sql被拼接了该死的“limit”分页参数。
上面提到的几个只是冰山一角,在我使用的过程中,还有各种涉及到sql的地方,会因为这个分页参数导致的问题,我可以分为两种:
1)直接导致报错的:明确报错原因的
比如insert、update语句等,不支持limit,会直接报错。
2)导致业务逻辑错误,但是代码没有错误提示
如我上面提到的用户可以重复注册,却没有报错,实际在代码当中是有报错的,但是当前方法对异常进行了throw,最终被全局异常捕获了。
不分页的sql被拼接了limit,导致没有报错,但是数据返回量错误。
注意:异常不是每次出现,是有一定纪律的,但是触发几率较高,原因在后面会逐渐脱出。
我这里只讲解项目基于的框架的使用方式。
代码如下:
@GetMapping("/cms/cmsEssayList")
public TableDataInfo cmsEssayList(CmsBlog cmsBlog) {
//状态为发布
cmsBlog.setStatus("1");
startPage();
List list = cmsBlogService.selectCmsBlogList(cmsBlog);
return getDataTable(list);
}
使用起来还是很简单的,通过 startPage()
指定分页参数