Maison >Java >javaDidacticiel >Implémentation Java du partage d'exemples de requêtes de pagination DB2

Implémentation Java du partage d'exemples de requêtes de pagination DB2

黄舟
黄舟original
2017-09-14 10:17:421781parcourir

Cet article présente principalement des exemples détaillant la requête de pagination DB2 et l'implémentation Java. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Le blogueur a déclaré : Parfois, nous devons effectuer un grand nombre d'opérations de traitement. sur les données existantes dans la base de données (par exemple, un certain champ de la table doit être complètement mis à jour, etc.), il est facile de causer des problèmes si vous utilisez directement select * from tableName, afin que nous puissions choisir la requête de pagination et le lot traitement des données.

DB2

  • startNum : numéro de début

  • endNum : numéro de fin

Instruction SQL


SELECT * FROM 
(
SELECT B.*, ROWNUMBER() OVER() AS TN FROM  
(
SELECT * FROM 表名
) AS B
) AS A 
WHERE A.TN BETWEEN startNum AND endNum;

Comme indiqué ci-dessus, il s'agit de l'instruction de requête de pagination de 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;
      }
    }
  }
}

Jusqu'à présent, nous avons simulé le fichier Mapper.xml de mappage de base de données, la couche Dao et la couche Service, et écrit des instructions SQL de requête de pagination dans Mapper.xml. En particulier, dans la couche d'implémentation du service, nous avons implémenté des opérations de requête de pagination spécifiques et traité les données par lots.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn