文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习

博主说:有时候,我们需要对数据库中现有的数据进行大量处理操作(例如表中的某个字段需要全部更新等),如果直接使用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 的实现层中,我们实现了具体的分页查询操作,并在其中批量处理数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持敏而好学论坛/嗨学网。

原文地址是:http://www.piaodoo.com/thread-13249-1-1.html 丝袜控www.txdah.com 131www.buzc.org学习之外可赏心悦目有助更好地学习!

详述 DB2 分页查询及 Java 实现的示例_java - JAVA的更多相关文章

  1. 编译运行第一个Java程序——通过示例学习Java编程3

    作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=13 在本教程中,我们将了解如何编写.编译和运行Ja ...

  2. 测试分页查询出数据并分文件导出[java工程]

    package cn.shiyanjun.test; import java.util.ArrayList; import java.util.List; public class ExcelTest ...

  3. DB2分页查询SQL

    select * from (select row_number() over() as rown,tpag.* from(SELECT int(COALESCE(列名1,0)),COALESCE(列 ...

  4. DB2分页查询简单示例

    select * from ( select a.* ,rownumber() over(order by create_time desc) as rowid from ( select * fro ...

  5. Java运算符——通过示例学习Java编程(6)

      作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=17 运算符是表示动作的字符,例如+是表示加法的算 ...

  6. 数据库MySQL-Oracle-DB2-SQLServer分页查询

    1. MySQL分页查询 (1)关键字: LIMIT beginIndex, maxRow (2)示例: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数. 如果给出 ...

  7. Hibernate和Struts分页查询

    分页查询数据库方法 /** * 分页查询方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> que ...

  8. DB2分页

    前言 最近在做一个DB2的项目,遇到分页处理的设计时开始犯难.以前一直采用MySQL作为项目数据库,其中的Limit关键字非常人性化,MySQL把分页的处理逻辑封装到了数据库的核心中,使得做查询设计时 ...

  9. 【java】分页查询实体类

    package com.dmsd.itoo.tool.pageModel; import java.io.Serializable; import java.util.HashMap; import ...

随机推荐

  1. 系统分析与设计HW5

    个人作业 领域建模 a. 阅读 Asg_RH 文档,按用例构建领域模型. 按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸 说明:请不要受 PCMEF 层次结构影响.你 ...

  2. wsl 下安装docker

    docker for windows本身其实是可以直接用的,但是仍然有很多不足,比如说:权限问题.没有docker.sock文件.文件编码问题等.而win10自带的wsl可以非常完美地解决这些问题. ...

  3. es为什么要取消type? 或者为什么一个index下多个type会有问题

    同一个index下的不同的type下的相同的filed,在同一个index下其实会被认为是同一个filed. 否则,不同type中的相同字段名称就会在处理中出现冲突的情况,导致Lucene处理效率下降

  4. ARP协议基础

    ARP 什么是ARP协议 ARP协议是能够根据IP地址解析出该IP地址所在设备的MAC地址,叫(Address Resolution Protocol)地址解析协议 ARP地址的工作流程 当一台主机A ...

  5. maven项目的导包问题,已经加载jar包了可是idea检测不到

    1.详细请参考 https://blog.csdn.net/brainhang/article/details/76725080 把测试模式注释即可

  6. Go语言入门篇-项目常见用法&语法

    一.导入包用法: //_表示仅执行该包下的init函数(不需要整个包导入) import _ "git.xx.xx/baases/identity/cachain/version" ...

  7. docker 安装mysql 并将文件挂载到本地

    首先准备好挂载的文件路径 执行mysql创建以及挂载的命令(这里还可以使用-e环境变量来创建新用户MYSQL_USER,MYSQL_PASSWORD) docker run -d -p : --res ...

  8. python面试题--初级(一)

    一. Python 中有多少种运算符? 这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题. 在 Python 中我们有 7 中运算符: 算术运算符.关系 (比较) 运算符.赋 ...

  9. sql server监控工具

    图形化监控工具 [1]toad toad官网介绍:https://www.quest.com/cn-zh/products/toad-for-sql-server/ 破解版网上搜索下载使用:https ...

  10. Kubernetes组件及网络基础

    在前面的部分了解了Pod的创建删除 ,查看信息等.那么我们怎么去管理Pod呢?我们可以通过 ReplicationController 去管理维护 Pod. Replication Controlle ...