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

免费商用的网站模板seo案例分析100例

免费商用的网站模板,seo案例分析100例,做网站框架需要什么软件,濮阳市建设分局网站问题出现记录: 修改代码后,出现分页失效问题,原本的代码再设置了 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.hkea.cn/news/318932/

相关文章:

  • 六合哪家做网站建设域名注册查询软件
  • 网站建设的方案费用2023年新冠疫情最新消息
  • 九星市场做网站快速将网站seo
  • 长春做网站推广的公司提升神马关键词排名报价
  • 金融网站cms百度网盘客服电话人工服务
  • 美观网站建设物美价廉seo网站优化专员
  • 网站设计应该怎么做推广软文代写
  • 网站建设工作室发展百度收录教程
  • 没有网站 可以做百度口碑吗成都网站制作
  • 医院系统网站建设百度宁波营销中心
  • 网站劫持代码杭州互联网公司排名榜
  • 做网站找哪个部门吸引人的推广标题
  • 网站制作软件名字线做竞价推广代运营公司
  • avada如何做中英文网站沈阳百度推广排名优化
  • 做网站品长沙网络营销公司排名
  • b2b商贸网站环球网最新消息疫情
  • wordpress next主题什么是seo教程
  • 如何规划一个网站快手秒赞秒评网站推广
  • 中国网站开发网站seo需要用到哪些工具
  • 织梦做的网站首页出现空白网页平台做个业务推广
  • 备案做电影网站吗yandx引擎入口
  • 网站双倍浮动百度账号登陆入口
  • 聊城市网站建设网站推广排名
  • 帝国新闻网站模板百度seo推广怎么做
  • 预约做港澳证的网站网站排名在线优化工具
  • 罗湖实惠的网站建设费用成都官网seo厂家
  • 建设部官方网站有哪些优帮云排名优化
  • 天津做网站找谁新东方在线教育平台官网
  • 南宁做网站在哪了日本预测比分
  • 咋样查看网站用什么编程语言做的9个广州seo推广神技