• JDBC


    1. SQL Paging Statement: different database has different paging statment

      MySQL: LIMIT M,N

        M: the start index, starts from 0

        N: the items amout of each query

      Query 10 items in each page:

        first page: SELECT * FROM customer LIMIT 0,10;

        second page: SELECT * FROM customer LIMIT 10,10;

        third page: SELECT * FROM customer LIMIT 20,10; 

        x th page: SELECT * FROM customer LIMIT (n-1)*10,10;

        general count: SELECT * FROM customer LIMIT (N-1)*M,M;

    2. Paging query: to reduce the memory usage, query the record in batches

    3. Import the class related to the paging: Page 

      private List records; // the total records

      private int currentPageNum; // the current page number

      private int totalRecords; // the total records

      private int pageSize; // the record amount in each page

      private int totalPage; // the page amount

      private int startIndex; // the start index of each page

    The Page class:

    package com.pp.web.beans;
    
    import java.util.List;
    
    public class Page {
        // check from DAO
        private List records; // the total records
        // check from the page
        private int currentPageNum; // the current page number
        // check from DAO
        private int totalRecords; // the total records
        // default number
        private int pageSize = 10; // the record amount in each page
        // calculate by total records
        private int totalPage; // the page amount
        // calculate by the current page
        private int startIndex; // the start index of each page
    
        public Page(int currentPageNum, int totalRecords) {
            this.currentPageNum = currentPageNum;
            this.totalRecords = totalRecords;
            // calculate the total page
            totalPage = totalRecords % pageSize == 0 ? totalRecords / pageSize
                    : (totalRecords / pageSize + 1);
            startIndex = (currentPageNum - 1) * pageSize;
        }
        
        getter/setter...
    }

     Batch processing: could improve the effeciency

    package com.pp.jdbc;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    
    import org.junit.Test;
    
    import com.pp.util.JdbcUtil;
    
    /*
     * Batch processing
     */
    /*
     CREATE TABLE t3(
         id INT PRIMARY KEY,
         name VARCHAR(100)
     );
     */
    public class BatchDemo {
    
        @Test
        public void test1(){
            Connection connection = null;
            Statement statement = null;
            try{
                connection = JdbcUtil.getConnection();
                statement = connection.createStatement();
                String sql1 = "INSERT INTO t3 VALUES(1,'aa1')";
                String sql2 = "INSERT INTO t3 VALUES(2,'aa2')";
                String sql3 = "DELETE FROM t3 WHERE id = 1"; 
                // There is a List<String> in the Statement object
                statement.addBatch(sql1);
                statement.addBatch(sql2);
                statement.addBatch(sql3);
                // execute the batch command
                statement.executeBatch();
                
            }catch(Exception e){
                e.printStackTrace();}
            finally{
                JdbcUtil.release(connection, statement, null);
            }
        }
        
        @Test
        public void test2(){
            Connection connection = null;
            PreparedStatement pstatement = null;
            
            try{
                connection = JdbcUtil.getConnection();
                pstatement = connection.prepareStatement("INSERT INTO t3 VALUES(?,?)");
                for(int i = 0; i<=100;i++){
                    pstatement.setInt(1, i);
                    pstatement.setString(2, "aa"+i);
                    pstatement.addBatch();
                }    
                pstatement.executeBatch();
            }catch(Exception e){
                e.printStackTrace();}
            finally{
                JdbcUtil.release(connection, pstatement, null);
            }
        }
        
        @Test
        public void test3(){
            Connection connection = null;
            PreparedStatement pstatement = null;
            
            try{
                connection = JdbcUtil.getConnection();
                pstatement = connection.prepareStatement("INSERT INTO t3 VALUES(?,?)");
                for(int i = 0; i<=10001;i++){
                    pstatement.setInt(1, i);
                    pstatement.setString(2, "aa"+i);
                    // if the data is too much, may lead to memory leak
                    // so we can handle the data by batch
                    pstatement.addBatch();
                    if(i%100==0){
                        pstatement.executeBatch();
                        // clear the data in the list
                        pstatement.clearBatch();
                    }
                }    
                pstatement.executeBatch();
            }catch(Exception e){
                e.printStackTrace();}
            finally{
                JdbcUtil.release(connection, pstatement, null);
            }
        }
    
    }

    page.jsp

  • 相关阅读:
    QT学习笔记——06-Day16_C++_QT
    QT学习笔记——06-Day15_C++_QT
    QT学习笔记——06-Day14_C++_QT
    c++提高学习笔记——05-c++STLday13_贪吃蛇案例
    c++提高学习笔记——05-c++STLday12
    c++提高学习笔记——05-c++STLday11
    混子的 后缀数组 刷题记录
    POJ2528Mayor's posters 线段树,离散化技巧
    莫比乌斯反演 刷题记录
    P问题,NP问题,NPC问题学习笔记
  • 原文地址:https://www.cnblogs.com/ppcoder/p/7468339.html
Copyright © 2020-2023  润新知