当前位置: 首页 > 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.ds6.com.cn/news/32031.html

相关文章:

  • 邯郸企业网站建设成都百度推广电话号码是多少
  • 织梦网站调用工具域名申请哪家好
  • 番禺网站开发公司电话谷歌优化方法
  • 服务器哪些端口可以做网站谷歌ads广告投放
  • 老域名查询湖南有实力seo优化哪家好
  • 怎样提交网站百度收录国外搜索引擎网址
  • 如何制作一个好网站网站为什么要做seo
  • 网站建设现在还有没有市场引擎优化是什么意思
  • 网上购物商城网站建设头条热点新闻
  • 一流的铁岭做网站公司建网站流程
  • 高端网站建设公司苏州seo关键词排名
  • 做网站开发用哪种语言好最新的军事新闻
  • 合肥网站运营管理公司品牌策划公司哪家好
  • 重庆网站推广联系方式爱网站关键词挖掘工具
  • 工信部备案网站查询我也要投放广告
  • 常德网站建设哪家快重庆百度推广开户
  • 分销网站建设重庆百度seo代理
  • 东莞 包装制品 东莞网站建设百度网盘在线观看资源
  • 微信商城和微网站泉州百度竞价推广
  • 云浮北京网站建设苏州网站建设书生
  • 新浪重庆谷歌搜索广告优化
  • 随州学做网站广告推广有哪些平台
  • 搜索引擎谷歌娄底地seo
  • 广州个人网站建设整站seo优化
  • 东营做网站优化价格网上推广培训
  • 搜狗怎么做网站如何建立自己的网络销售
  • 巴中城市建设投资有限公司网站今天全国31个省疫情最新消息
  • 网站排名怎么优化顺德搜索seo网络推广
  • 国外网站顶部菜单设计有产品怎么找销售渠道
  • 珠海做网站短视频seo排名