MySqlページをめくる検索機能を実現する


まず、なぜ改ページで照会するのかを明確にします。データが膨大なため、検索がすべてページに表示されることは不可能です。すべてページに表示されると、検索速度が遅い場合もあります。だから、改ページで照会して解決しました。②性能の最適化など(他の問題は補足を歓迎します)の問題。
ページ別の検索も本当のページと偽のページに分けられます。
真の改ページ:データベースに基づいて検出されたデータを直接改ページして表示します。利点はデータベースのデータを変えることで、検索結果に影響がありません。短所は速度が遅いことです。
偽のページ:すべてのデータが検索されたデータをリストセットキャッシュに入れ、表現層方法が実行を呼び出す。データをセットにしてメモリに入れたため、速度が速いという欠点がありますが、データベースが変更された後に不一致が発生するということです。
二つのページにはそれぞれ長所と短所があります。
ここで紹介するのは本当に改ページする方法です。
1、JavaBeanを建立する

import java.io.Serializable;
/**
 *      
 * @author 
 *
 */
public class UserBean implements Serializable {
  /**  ID*/
  private int id;
  /**    */
  private String name;
  public UserBean() {
  }
  public UserBean(int id, String name) {
    this.id = id;
    this.name = name;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @Override
  public String toString() {
    return "UserBean [id=" + id + ", name=" + 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、ダオ層実現類
 

 @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、サービス層実現類
  

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、調べたデータをページに入れて展示すればいいです。
上記の方法では、改ページでは10のデータが表示されていますが、計算分析は以下の通りです。
データ総条数:total Count
各ページの表示本数:PageSize
総ページ数:totalPage
インデックス開始
現在のページ数currPage
ページ全体の計算式:
totalCount%pageSize
残りが0なら――>totalPage=total Count/pageSize
         残りが0でなければ――>totalPage=totalCount/PageSize+1
結論:totalPage=(total Count+pageSize-1)/pageSize
締め括りをつける
以上は小编でご绍介したMySqlページをめくる検索机能を実现しました。皆さんに何かご质问があれば、メッセージをください。小编はすぐに皆さんに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。