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