MySQLのクエリーページ

ページングクエリは、Webページでどこでも見ることができ、それがどのような原則ですか?MySQLデータベースに基づいて、簡単な制限の実装を以下に示します。

すべてのページに表示される場合は、最初の明確な理由を使用ページングクエリ、データが大きいため、クエリはスロークエリの場合原因も、ページ上のすべてをすることができます表示することはできません、ページングクエリデータのクエリは、①解決しました。②パフォーマンスの最適化、などの問題を(他の問題を追加してください)。

ページネーションクエリはまた、真と偽のページネーションのページネーションに分けることができます。

  真のページ:絶縁ベースのデータベースのデータを直接改ページ、利点は、データベースのデータは、結果には影響しません変更することで、欠点が遅くなります。

  偽ページ:コレクションリストキャッシュと呼ばれるプレゼンテーション層メソッドにデータパッケージのすべてのデータをチェックしてください。以来データはように速く、メモリにセットとしてパッケージ化されていますが、欠点は、データベースの変更で、不一致があるでしょう。

  ページの二種類が少し友人がそれを使用する特定の状況に応じて、長所と短所を持っています。

ページングは​​、以下のことを紹介する真の方法です:

1、JavaBeanの確立

インポートしたjava.io.Serializable;
 / ** 
 *ユーザエンティティクラス
 * @author  
 * 
 * / 
パブリック クラス UserBeanの実装Serializableを{
     / ** ユーザID * / 
    プライベート int型のID;
     / ** ユーザー名* / 
    プライベート文字列名;
     公共UserBeanの(){ 
        
    } 
    公共 UserBeanの(int型のID、文字列名){
         この .ID = ID;
         この .nameの= 名; 
    } 
    公共 のint のgetId(){
        戻り値のID。
    } 
    公共 ボイド SETID(int型のID){
         この .ID = ID。
    } 
    
    パブリック文字列のgetName(){
         戻り名。
    } 
    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 
    
    @Override 
    パブリック文字列のtoString(){
         リターン "UserBeanの[ID =" + ID + "NAME =" +名+ "]" 
    } 

}

2、JavaBeanは表示用データをページング

/**
 * 用于展示分页数据的JavaBean对象
 * @author
 *
 */

import java.util.List;

public class PagenationBean {
    /** 当前页数 */
    private Integer currPage;
    /** 总页数 */
    private Integer totalPage;
    /** 用于展示的table数据 */
    private List<UserBean> dataList;

    public Integer getCurrPage() {
        return currPage;
    }

    public void setCurrPage(Integer currPage) {
        this.currPage = currPage;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public List<StuBean> getDataList() {
        return dataList;
    }

    public void setDataList(List<StuBean> dataList) {
        this.dataList = dataList;
    }

}

3、dao层实现类

  @Override
    public int getTotalCount() { //计算总的数据条数
        this.setConnection();
        int totalCount = 0;
        try {
            ps = con.prepareStatement("select count(*) from t_user");
            rs = ps.executeQuery();
            if (rs.next()) {
                totalCount = rs.getInt(1);
            }
        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            this.closeConnection();
        }
        return totalCount;
    }
   @Override
   public List<UserBean> getUserListByStartIndex(int StartIndex) { //根据传入的limit第一位参数得到该参数后面的10条数据
        List<UserBean> userList = new ArrayList<>();
        UserBean userBean= null;
        this.setConnection();
        int totalCount = 0;
        try {
            ps = con.prepareStatement("select * from t_user limit ? , 10");
            ps.setInt(1, StartIndex);
            rs = ps.executeQuery();
            while (rs.next()) {
                userBean= new StuBean();
                userBean.setId(rs.getInt("id"));
                userBean.setName(rs.getString("name"));
                stuList.add(userBean);
            }
        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            this.closeConnection();
        }        
        return userList;
    }    

4、service层实现类

  private IUserDao isd = new UserDaoImpl();

  @Override
public int getTotalPage() { //得到数据据条数 int totalCount = isd.getTotalCount(); //计算总页数公式 int totalPage = (totalCount + 10 -1)/10; return totalPage; }
  @Override
    public List<UserBean> getUserListByCurrPage(int currPage) {
        //通过当前页计算起始索引
        int StartIndex = (currPage - 1) * 10;
        List<UserBean> userList = isd.getStuListByStartIndex(StartIndex);
        return userList;
    }

5、将查询出的数据放入页面展示就OK了。

以上方法中,分页显示的是10条数据,计算分析如下:

   数据总条数:  totalCount

  每页显示条数: pageSize

  总页数:    totalPage

  起始索引    StartIndex

  当前页数    currPage

  总页计算公式:

     totalCount % pageSize

      如果余数为0 ——> totalPage=totalCount / pageSize

         如果余数不为0 ——> totalPage=totalCount / pageSize +1

    得出结论:totalPage = (totalCount + pageSize -1)/pageSize

 

欢迎指正不足之处!


The END

 

おすすめ

転載: www.cnblogs.com/hpqbh/p/11839334.html