分页用于从数据库搜索出符合条件的数据,分页显示
BO
public class exampleBOImpl implements exampleBO {
private ExampleDAO exampleDAO;
//取出所有符合条件的数据
@Override
public List<UserInfo> selectExampleListByPage(Example example, PageBean pb)
throws BusinessException {
return this.exampleDAO.selectExampleListByPage(example, pb);
}
//计算当前数据的总是
@Override
public int selectExampleListCount(Example example) throws BusinessException {
return this.exampleDAO.getExampleListCount(example);
}
}
DAO
public class ExampleDAOImpl extends SqlSessionDaoSupport implements ExampleDAO{
private String mapper = "com.XXXXXX.example.";
@SuppressWarnings("unchecked")
@Override
public List<Example> selectExampleListByPage(Example example, PageBean pb) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("example", example);
if(null != pb){
map.put("start", pb.getStartRow() - 1);
map.put("pageSize", pb.getPageSize());
}
return getSqlSession().selectList(mapper + "selectExampleListByPage", map);
}
@Override
public int selectExampleListCount(Example Example) {
return (Integer) getSqlSession().selectOne(mapper + "selectExampleListCount", Example);
}
}
Controller
@Controller
@RequestMapping(value = "/example")
@SessionAttributes("employee")
public class ExampleController {
private static Logger logger = Logger.getLogger(ExampleController.class);
@Autowired
private ExampleBO exampleBO;
@RequestMapping("/list.htm")
public ModelAndView listExample(@ModelAttribute("example") ExampleBean example,Integer pageNo) throws BusinessException {
Map<String, Object> map = new HashMap<String, Object>();
// 分页 构建pageBean
PageBean pb = null;
pb = new PageBean(pageNo, exampleBO.getExampleListCount(example),10,7);
map.put("paging", pb);
// 列表显示所有住户信息
List<Example> allExampleList = this.exampleBO.getExampleList(example, pb,);
map.put("example", example);
map.put("allExampleList", allExampleList);
return new ModelAndView("/example/list", map);
}
}
pagebean的配置:
import org.apache.log4j.Logger;
public class PageBean {
private static Logger log = Logger.getLogger(PageBean.class);
// 当前页码
private int currentPage = 1;
// 总数量
private int totalCount = 0;
// 总页数
private int totalPage = 1;
// 开始页
private int startPage = 1;
// 结束页
private int endPage = 1;
// 每页大小
private int pageSize = 10;
// 每次显示多少页
private int showPages = 7;
// 第一页
private boolean first = false;
// 最后页
private boolean last = false;
// 上一页
private boolean pre = false;
// 下一页
private boolean next = false;
// 开始行 从1开始计算
private int startRow = 1;
// 结束行
private int endRow = 1;
// url
private int url;
public PageBean(Integer currentPage, Integer totalCount) {
if (totalCount == null) {
this.totalCount = 0;
} else {
this.totalCount = totalCount;
}
if (currentPage == null || currentPage <= 0) {
this.currentPage = 1;
} else {
this.currentPage = currentPage;
}
this.init();
}
public PageBean(Integer currentPage, Integer totalCount, Integer pageSize,
Integer showPages) {
if (totalCount == null) {
this.totalCount = 0;
} else {
this.totalCount = totalCount;
}
if (currentPage == null || currentPage <= 0) {
this.currentPage = 1;
} else {
this.currentPage = currentPage;
}
if (pageSize == null || pageSize == 0) {
this.pageSize = 10;
} else {
this.pageSize = pageSize;
}
if (showPages == null || showPages == 0) {
this.showPages = 10;
} else {
this.showPages = showPages;
}
// 初始化
this.init();
}
private void init() {
if (this.totalCount != 0) {
if ((this.totalCount / this.pageSize) != 0
&& (this.totalCount % this.pageSize == 0)) {
this.totalPage = this.totalCount / this.pageSize;
} else {
this.totalPage = this.totalCount / this.pageSize + 1;
}
if ((this.currentPage / this.showPages) != 0
&& (this.currentPage % this.showPages == 0)) {
this.startPage = (this.currentPage / this.showPages - 1)
* this.showPages + 1;
} else {
this.startPage = (this.currentPage / this.showPages)
* this.showPages + 1;
}
if ((this.startPage + this.showPages) <= this.totalPage) {
this.endPage = (this.startPage + this.showPages - 1);
} else {
this.endPage = this.totalPage;
}
// 校验??
if (this.endPage < this.startPage) {
this.startPage = (this.endPage / this.showPages)
* this.showPages + 1;
}
if (this.endPage <= this.currentPage) {
this.currentPage = this.endPage;
}
if (this.currentPage == 1) {
this.first = false;
this.pre = false;
} else {
this.first = true;
this.pre = true;
}
if (this.currentPage == this.totalPage) {
this.last = false;
this.next = false;
} else {
this.last = true;
this.next = true;
}
this.startRow = (this.currentPage - 1) * this.pageSize + 1;
this.endRow = this.startRow + this.pageSize - 1;
}
log.debug("currentPage::" + this.currentPage);
log.debug("totalCount::" + this.totalCount);
}
}
xml里面的搜索语句
<select id="selectExampleListByPage" parameterType="Map" resultMap="exampleResult"> select * from example_table <if test="example.name!=null and example.name!=''"> and name = #{example.name} </if> <if test="start != null and pageSize != null"> limit #{start},#{pageSize} </if> </select> <select id="selectExampleListCount" parameterType="example" resultType="int"> select count(*) from example_table </select>
页面的配置,将此句写在FORM里:
<jsp:include page="../paging/paging.jsp" />