商品情報をページングする
もし私たちがページングを行うなら、ページには必ずこれらのデータが表示されます.商品情報、総ページ数、現在のページにはもちろんトップページ、末尾ページ、前ページ、次ページもページに表示されます.もちろん、エンティティに商品の総個数を書いて、全部で何ページあるかを計算します.そのため、これらのデータをエンティティPageBeanにカプセル化するだけでいいです.ここではMVC 3階層アーキテクチャを使用して呼び出し、最終的にデータを取得してカプセル化し、ページに表示します.
1:では、まずエンティティPageBeanを作成します(get()とset()メソッドは生成しません).
2:私たちは便宜上、まずController層の作成を開始します.私たちが知っているときはサービス層を徐々に呼び出し、dao層を呼び出してデータを検索します.しかし、私たちが検索する条件は何ページ目のデータを検索することです.だから、現在のページ番号を伝えます.私たちは最初にコードを簡単に書くことができます.私たちはまだ何ページ目か分からないので、まず1ページ目に設定できます.
3:サービス層メソッドを呼び出してサービス層を作成します(エンティティPageBeanで書いた内容をすべてデータにカプセル化します):
サービスで合計何個のデータがあるか負の値はまだ分からないので、データベースを検索し、daoレイヤのメソッドを呼び出し、最後に検索したデータを返す必要があります.
PageBeanのリストをカプセル化する価値がある場合は、データベースから検索する必要があります.例えば、最初のページで10個のデータを検索するには、sql文はselect*from tbl_である必要があります.book limit 0,10;limitの後に書かれたデータについては、次のように理解できます.
第1ページ:limit 0,10第2ページ:limit 10,10第3ページ:limit 20,10第4ページ:limit 30,10
したがってlimitの最初のパラメータでまとめることができる式は(現在のページ-1)*(ページごとに表示される数)です.
だから、私たちのメソッドコードは(ここでは自分でクエリーメソッドをカプセル化して、後で出します):
今コードを书いてテストすることができて、成功した后にページに响くことができて、私はこのように书きます
1:では、まずエンティティPageBeanを作成します(get()とset()メソッドは生成しません).
package cn.itcast.domain;
import java.util.ArrayList;
import java.util.List;
public class PageBean {
//
private int currentPage;
//
private int currentCount;
//
private int totalPage;
//
private int totalCount;
//
private List bookList=new ArrayList();
}
2:私たちは便宜上、まずController層の作成を開始します.私たちが知っているときはサービス層を徐々に呼び出し、dao層を呼び出してデータを検索します.しかし、私たちが検索する条件は何ページ目のデータを検索することです.だから、現在のページ番号を伝えます.私たちは最初にコードを簡単に書くことができます.私たちはまだ何ページ目か分からないので、まず1ページ目に設定できます.
@WebServlet("/bookList")
public class BookListServlet extends HttpServlet {
private static BookService bookService=new BookServiceImpl();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
PageBean pageBean=new PageBean();
int countPage=1;
int currentCount=10;
pageBean=bookService.bookPageBean(countPage,currentCount);
//System.out.println(pageBean);
if(pageBean!=null){
request.setAttribute("pageBean",pageBean);
request.getRequestDispatcher("showBooks.jsp").forward(request, response);
}else{
System.out.println(" ");
}
}
}
3:サービス層メソッドを呼び出してサービス層を作成します(エンティティPageBeanで書いた内容をすべてデータにカプセル化します):
public class BookServiceImpl implements BookService {
private BooksDao bookDao =new BooksDaoImpl();
private MessageDao messageDao=new MessageDaoImpl();
@Override
public PageBean bookPageBean(int countPage,int currentCount) {
// TODO Auto-generated method stub
PageBean pageBean=new PageBean();
//
pageBean.setCurrentPage(countPage);
//
pageBean.setCurrentCount(currentCount);
//
int totalCount=bookDao.queryBookCount();
pageBean.setTotalCount(totalCount);
//
int totalPage=(int)Math.ceil(1.0*totalCount/currentCount);
pageBean.setTotalPage(totalPage);
//
List listBook=bookDao.queryBookPageBean(countPage, currentCount);
pageBean.setBookList(listBook);
return pageBean;
}
}
サービスで合計何個のデータがあるか負の値はまだ分からないので、データベースを検索し、daoレイヤのメソッドを呼び出し、最後に検索したデータを返す必要があります.
public class BooksDaoImpl extends DBUtils implements BooksDao {
@Override
public int queryBookCount() {
String sql="select count(*) as count from tbl_book";
int count=0;
try {
super.getConnection();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
count=rs.getInt(1);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
}
PageBeanのリストをカプセル化する価値がある場合は、データベースから検索する必要があります.例えば、最初のページで10個のデータを検索するには、sql文はselect*from tbl_である必要があります.book limit 0,10;limitの後に書かれたデータについては、次のように理解できます.
第1ページ:limit 0,10第2ページ:limit 10,10第3ページ:limit 20,10第4ページ:limit 30,10
したがってlimitの最初のパラメータでまとめることができる式は(現在のページ-1)*(ページごとに表示される数)です.
だから、私たちのメソッドコードは(ここでは自分でクエリーメソッドをカプセル化して、後で出します):
public List queryBookPageBean(int currentPage,int currentCount) {
// TODO Auto-generated method stub
String sql="select *from tbl_book limit ?,?";
int count=(currentPage-1)*currentCount;
Object[] obj={count,currentCount};
return super.executeQuery(sql, Book.class,obj);
}
今コードを书いてテストすることができて、成功した后にページに响くことができて、私はこのように书きます
, , PageBean ,