1.由于数据库的不同,每种数据库实现的分页的SQL语句不同,其实方法是一样的,这样我们可以抽象出数据库查询分页的方法接口,如下
package com.hibernate.pageService;
import java.util.List;
public interface PageInterface {
// 获取记录条数
public int allRecordsNum();
// 获取总记录的页数
public int allPagesNum();
// 上一页
public List beforePageRecs(int currentPageNum);
// 下一页
public List nextPageRecs(int currentPageNum);
// 第一页
public List firstPageRecs();
// 最后一页
public List lastPageRecs(int lastPageNum);
// 当前页记录
public List currentPageRecs();
}
2.创建分页接口的实现类,比如我在这里创建了Mysql和Oracle的两种数据库分页的类。
MySql:(在这里就不具体实现分页的功能了,只是分享我的实现想法)
package com.hibernate.pageService.impl;
import java.util.List;
import com.hibernate.pageService.PageInterface;
public class MySqlPageImpl implements PageInterface {
public int allRecordsNum() {
System.out.println("MySql数据库");
return 0;
}
public int allPagesNum() {
return 0;
}
public List beforePageRecs(int currentPageNum) {
return null;
}
public List nextPageRecs(int currentPageNum) {
return null;
}
public List firstPageRecs() {
return null;
}
public List lastPageRecs(int lastPageNum) {
return null;
}
public List currentPageRecs() {
return null;
}
}
Oracle:(在这里就不具体实现分页的功能了,只是分享我的实现想法)
package com.hibernate.pageService.impl;
import java.util.List;
import com.hibernate.pageService.PageInterface;
public class OraclePageImpl implements PageInterface {
public int allRecordsNum() {
System.out.println("Oracle数据库");
return 0;
}
public int allPagesNum() {
return 0;
}
public List beforePageRecs(int currentPageNum) {
return null;
}
public List nextPageRecs(int currentPageNum) {
return null;
}
public List firstPageRecs() {
return null;
}
public List lastPageRecs(int lastPageNum) {
return null;
}
public List currentPageRecs() {
return null;
}
}
3.创建工厂类,用于生成分页接口的实现类。
package com.hibernate.pageService;
public class PageFactory {
private PageInterface pageInterface;
public PageFactory(PageInterface pageInterface) {
this.pageInterface = pageInterface;
}
public PageInterface returnPageImpl() {
return pageInterface;
}
}
4.创建测试服务类。
package com.hibernate.pageService;
import com.hibernate.pageService.impl.MySqlPageImpl;
import com.tool.SpringBeanFactory;
public class PageService {
public void pageTest() {
PageFactory pageFactory = new PageFactory(new MySqlPageImpl());
PageInterface pageInterface = pageFactory.returnPageImpl();
pageInterface.allRecordsNum();
}
}
// /测试类
class mainClass {
public static void main(String[] args) {
PageService pageService = new PageService();
pageService.pageTest();
}
}
测试输出:MySql数据库。