本篇文章主要介绍了详述 db2 分页查询及 java 实现的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
博主说:有时候,我们需要对数据库中现有的数据进行大量处理操作(例如表中的某个字段需要全部更新等),如果直接使用select * from tablename很容易出现问题,因此我们可以选择分页查询,批量处理数据。
db2
startnum:起始数
endnum:结尾数
sql 语句
select * from
(
select b.*, rownumber() over() as tn from
(
select * from 表名
) as b
) as a
where a.tn between startnum and endnum;
如上所示,此即为 db2 的分页查询语句。
mapper
<?xml version="1.0" encoding="utf-8" ?>
<!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.hit.store.dao.storeentitydao" >
<resultmap id="baseresultmap" type="storeentity" >
<id column="id" property="id" jdbctype="bigint" />
<result column="create_time" property="createtime" jdbctype="timestamp" />
<result column="owner" property="owner" jdbctype="varchar" />
<result column="description" property="description" jdbctype="varchar" />
</resultmap>
<select id="query4encrypt" parametertype="map" resultmap="baseresultmap">
<!--- 在映射文件中 sql 语句末尾不应该加分号,防止解析错误 --->
select * from
(
select b.*, rownumber() over() as tn from
(
select * from tbl_store
) as b
) as a
where a.tn between #{startnum} and #{endnum}
</select>
</mapper>
java
/**
* dao 层代码
*/
@repository("storeentitydao")
public interface storeentitydao {
list<storeentity> query4encrypt(map<string, object> parammap);
}
/**
* service 层接口代码
*/
public interface storeentityservice {
public void query4encrypt();
}
/**
* service 层实现代码
*/
@service("storeentityservice")
public interface storeentityserviceimpl implements storeentityservice {
@override
public void query4encrypt() {
boolean flag = true;
long startnum = 0l;
long endnum = 0l;
map<string, object> parammap = new hashmap<string, object>();
while (flag) {
endnum = startnum + 100;
parammap.put("startnum", startnum);
parammap.put("endnum", endnum);
list<storeentity> storeentitylist = storeentitydao.query4encrypt(parammap);
if (storeentitylist != null && storeentitylist.size() > 0) {
// 遍历加密数据
for (storeentity storeentity : storeentitylist) {
// 加密及持久化处理
}
}
if (storeentitylist != null && storeentitylist.size() >= 100) {
startnum = endnum++;
} else {
flag = false;
}
}
}
}
至此,我们模拟了数据库映射 mapper.xml 文件、dao 层和 service 层,并在 mapper.xml 中书写了分页查询 sql 语句。特别地,在 service 的实现层中,我们实现了具体的分页查询操作,并在其中批量处理数据。
以上就是java实现db2分页查询示例分享的详细内容。
