快速找到一条记录所在的页码

算出这条记录所在的rowNum,rowNum是连续的,再根据rowNum算出这条记录所在的页码。

public int getPageNoByBackId(int noteId,int backId,int pageSize) {
	StringBuilder sql = new StringBuilder();
	sql.append(" select num from ( \n");
	sql.append("select ROW_NUMBER() over(order by backId) as num,backId  \n");
	sql.append("from forum..f_topic_reply where noteId=? \n");
	sql.append(") a where a.backId =? \n");

	log.debug(sql.toString());
	int rowNum = 0;
	DB db = null;
	try {
		db = getGkDB();
		rowNum = db.queryForInt(sql.toString(), new Object[] {noteId,backId});
	} catch (Exception e) {
		log.error(e);
	}finally{
		if(db!=null)db.close();
	}
	int pageNum = 0;
	if(rowNum>0){
		if(rowNum%pageSize==0){
			pageNum=rowNum/pageSize;
		}else{
			pageNum=rowNum/pageSize+1;
		}
	}
	return pageNum;
}

如果一个链接里有锚点,跳转的时候用window.location打开不起作用,但在document.location中打开是可以的

时间: 2024-10-03 22:29:01

快速找到一条记录所在的页码的相关文章

MySql || 快速创建100w条记录

平时每个开发者都会讨论数据量大时,sql的优化问题.但是并不是每个人都会有100w的数据量可以用来实战,那么今天我们就自己动手,模拟一个100w数据量的表. 创建原理 其实创建的方法有很多,有快的也有慢的.本博客中写的当然不是最快的那个,但确实是比较好操作和理解的.那么我先来说明一下它的原理:它是利用mysql中的在MEMORY引擎的特点,用于快速的插入100w的数据在内存中存放,然后再利用sql插入到目标的表当中. 操作步骤 创建表t_user,这是用于存放数据的表. 1 CREATE TAB

MySQL 快速构造一亿条记录的表

  在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:http://blog.csdn.net/mchdba/article/details/52938114,但是因为录入一亿表需要2个小时,所以还是感觉速度慢了些,那有没有啥办法能加快这一步骤呢?   1.建一张通用的用户表 建用户表没有啥变化,还是和上次一样. USE test; CREATE TABLE `UC_USER` ( `ID` BIGINT (20), `USER_NAME` VARCHAR (400), `U

[转]Oracle dbms_random函数用法快速生成多条测试数据

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法. 首先模拟一下100条的随机数据 [sql] view plaincopyprint? select rownum as id, to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, trunc(dbms_rand

MSSQL分组取后每一组的最新一条记录

数据库中二张表,用户表和奖金记录表,奖金记录表中一个用户有多条信息,有一个生效时间,现在要查询: 奖金生效时间在三天前,每个用户取最新一条奖金记录,且用户末锁定 以前用的方法是直接写在C#代码中的: for(所有末锁定用户) 查询奖金记录表 top 1 where uid=??? order by 生效时间 desc if(上面查询的记录生效时间在三天前) 输出 今天花了大部分时间研究了一下,终于找到一条SQL语句就可以把结果查出来的方法: 那个row_number函数在MSSQL2008以上才

MySQL 如何准备一亿条记录的表来测试

曾经一个朋友问我如何快速的在线往一个大表里面添加一个字段或者修改一个字段的长度,mysql版本是5.6,所以就准备在测试环境准备一个一亿条记录的表,然后来实际测试下到底哪种方式比较快,先来开始准备一亿条记录的表.   我线上有上亿条记录的表,但是很多网上朋友都没有,那么我这里就实践了一条办法,来实现自己构造一亿条数据记录的表.实现思路就是先建一张通用的20个字段左右的用户表,然后写一个存储过程,不停的往这个表里面写数据,while循环写上一亿次,这样就形成了一张一亿条记录的表出来.     1.

mongodb随机查询一条记录的正确方法!

关于从mongodb库中随机取出一条记录的方法的博文很多,其中都提到了下面三种方法: 1.skip过随机数量的记录. DBCursor cursor = coll.find(query); int rint = random.nextInt(cursor.count()); cursor.skip(rint); DBObject word = null; if(cursor.hasNext()){ word = cursor.next(); cursor.close(); } 很多人说不推荐这种

SQL 一次插入多条记录

本文介绍如何快速插入多条数据到数据表中,以满足sql语句学习或项目测试的需要. 本文非原创,是对移步原文的重新整理. 如有以下表格,如图: 1,原始添加记录的方式,sql语句如下: 1 insert into City(Code,CityCName) values('TS','唐山'); 2,使用Union执行插如操作,sql语句如下: 1 insert into City(Code,CityCName) 2 select 'ZZ','郑州' 3 union 4 select 'HD','邯郸'

“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法

1.首先.select top使用方法: 參考问题  select top n * from和select * from的差别 select * from table --  取全部数据.返回无序集合 select top n * from table  -- 依据表内数据存储顺序取前n条,返回无序集合 select * from table order by id desc -- 取全部数据.按id逆序返回有序列表 select top n * from table order by id d

列表翻页,选中一条记录

说明:当添加一条记录时,该条记录在列表中的位置有多重情况,在列表的第一页第一项.在列表的最后一页最后一项.在列表中的任意一个位置,针对翻页选中一条目标记录具体事项一项两种情况 情况一:新添加的记录在列表的任意一个位置时,选中该条记录并点击选择然后点击[更新产品]按钮 具体实现代码如下(包含需要调用其他共方法): /** * 翻页逐条比较获得对应的产品 * webs:某一页所有的tr对象,dr:dr对象 */ public static WebElement getpoduct(List<WebE