詳しくはDB 2ページで調べて、Javaで実現します。

6868 ワード

ブロガーは、データベースにある既存のデータを大量に処理する必要がある場合(例えば、テーブルの中のあるフィールドは全部更新する必要があるなど)、直接select * from tableNameを使うと問題が発生しやすいので、ページ別に照会し、大量にデータを処理することができます。
DB 2
  • 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; 
    上記のように、DB 2の改ページ照会文です。
    Mapper
    
    
    <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">
        
        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 query4encrypt(Map 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 paramMap = new HashMap();
            while (flag) {
                endNum = startNum + 100;
                paramMap.put("startNum", startNum);
                paramMap.put("endNum", endNum);
                List 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の実現層においては、特定の改ページクエリ動作を実現し、データを一括処理する。