当前位置: 首页 > news >正文

做网站 seo塘厦房价

做网站 seo,塘厦房价,wordpress 密码提示,怎样制作公众号平台问题出现记录: 修改代码后,出现分页失效问题,原本的代码再设置了 PageHelper.startPage(pageNum, pageSize);后只有一个mysql查询,我在原本的业务查询前,新增了其他的Mysql查询,导致原需要分页的查询失效 …

问题出现记录:

修改代码后,出现分页失效问题,原本的代码再设置了
PageHelper.startPage(pageNum, pageSize);后只有一个mysql查询,我在原本的业务查询前,新增了其他的Mysql查询,导致原需要分页的查询失效

问题出现原因:
原本以为PageHelper是拦截当前线程下所有查询,对所有查询生效。

解决方法:

在需要查询分页的方法前,再写一个PageHelper.startPage(pageNum, pageSize);
PageHelper.startPage(pageNum,pageSize)会对紧随其后的一个查询分页生效

如果想在调用 PageHelper.startPage() 方法后,对紧随其后的查询关闭分页查询,调用 PageHelper.clearPage() 方法清空分页对象即可

PageHelper原理

PageHelper 通过拦截 MyBatis 的 SQL 语句,判断哪些查询需要进行分页处理。

当 PageHelper 拦截到一个查询语句时,它会解析该语句,提取出其中的 SELECT 子句和 FROM 子句,并将其封装成一个新的 SELECT 语句。然后,PageHelper 会在新的 SELECT 语句的末尾添加 LIMIT 子句,用来指定分页的起始行和结束行。

例如,对于如下的查询语句:

SELECT id, name, age FROM user WHERE age > 18 ORDER BY age DESC

PageHelper 会将其解析成如下的新的 SELECT 语句:

SELECT COUNT(*) FROM (SELECT id, name, age FROM user WHERE age > 18 ORDER BY age DESC) __page
SELECT id, name, age FROM user WHERE age > 18 ORDER BY age DESC LIMIT ?, ?

其中,第一个 SELECT 子句用来查询总的记录数,第二个 SELECT 子句用来查询指定页码的数据。PageHelper 会根据传入的参数,计算出 LIMIT 子句中的起始行和结束行,并将其设置到 PreparedStatement 中。

什么时候会导致不安全的分页?

PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。

只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。

如果代码在进入 Executor 前发生异常,就会导致线程不可用,这属于人为的 Bug(例如接口方法和 XML 中的不匹配,导致找不到 MappedStatement 时), 这种情况由于线程不可用,也不会导致 ThreadLocal 参数被错误的使用。

但是如果你写出下面这样的代码,就是不安全的用法:

PageHelper.startPage(1, 10);
List<User> list;
if(param1 != null){list = userMapper.selectIf(param1);
} else {list = new ArrayList<User>();
}

这种情况下由于 param1 存在 null 的情况,就会导致 PageHelper 生产了一个分页参数,但是没有被消费,这个参数就会一直保留在这个线程上。当这个线程再次被使用时,就可能导致不该分页的方法去消费这个分页参数,这就产生了莫名其妙的分页。

上面这个代码,应该写成下面这个样子:

List<User> list;
if(param1 != null){PageHelper.startPage(1, 10);list = userMapper.selectIf(param1);
} else {list = new ArrayList<User>();
}

这种写法就能保证安全。

如果你对此不放心,你可以手动清理 ThreadLocal 存储的分页参数,可以像下面这样使用:

List<User> list;
if(param1 != null){PageHelper.startPage(1, 10);try{list = userMapper.selectAll();} finally {PageHelper.clearPage();}
} else {list = new ArrayList<User>();
}
http://www.yayakq.cn/news/142744/

相关文章:

  • 深圳网站建设智能小程序网站建设飠金手指下拉
  • 网站开发一般包括wordpress文章摘要插件
  • 那个网站可以做软件出售的福建建站公司
  • 企业网站建设动图如何在百度发视频推广
  • 网站源码是什么格式wordpress仿包图网
  • 个人做网站被骗网站建设的落地页
  • 个人如何制作一个网站西安搬家公司收费情况一览表
  • 低价建设网站建设网站二级建造师如何解聘
  • 天津网站优化公司成都锦江区网站建设公司
  • 企业网站pr值低怎么办宜兴埠网站建设
  • 佛山制作网站公司哪家好柯林wap建站
  • 网站建设公司net2006怎么样做网站赚钱
  • 手机网站怎么做沉浸式网站建设公司营业执照经营范围
  • 广州网站seo推广河南移动官网网站建设
  • 建筑智库免费网站o2o是什么商业模式
  • 新手做网站的详细步骤外贸网站测速
  • 网站设计术语html网页制作作品
  • 给人家做网站服务器自己搭吗丽江门户网站
  • 扁平式网站免费企业自助建站
  • 郑州哪家做网站最好河北做网站公司那家好
  • 石家庄seo网站优化报价淘宝客建站还能赚钱吗
  • 科技杭州网站建设网站建设 排名下拉
  • 网站维护怎么收费旅游网站的规划与建设开题报告
  • 建网站 深圳wordpress中文tag
  • 做一个网站需要多少费用页游网站建设
  • pc端网站优缺点物流网站的建设方案总结
  • 做照片的网站有哪些模板网站一天建好
  • 福鼎建设局网站首页国家数据统一共享开放平台
  • 学习网站建设的是什么专业企业网站建设搭建
  • 北京专业网站搭建公司福州短视频seo公司