设为首页 收藏本站
查看: 745|回复: 0

[经验分享] java分页(基于mybatis)

[复制链接]

尚未签到

发表于 2016-11-26 03:06:58 | 显示全部楼层 |阅读模式
  该分页功能中心思想:
  001、为Page类设置 当前页,总记录数,每页记录数
  002、将查询的结果集复制给Page的属性容器
  003、向前台页面返回Page
  做到这三点,其他过程可自己发挥
  1、系统常量类

public class Conv
{
// 每页显示条数
public static int pageSize=10;
//登录后放在Session中的User信息
}
  2、Page类,包含了可以存放List的容器

public class Page
{
/**当前页*/
private int curPage;
/**总页数*/
private int total;
/**总的记录数*/
private int sum;
/**结果集*/
private List result;
public Page(){}
public Page(int curPage,int sum) {
this.curPage = curPage;
this.sum = sum;
int totalPage =
(int) Math.ceil(sum/Double.parseDouble(Conv.pageSize + ""));
if (totalPage == 0)
totalPage = 1;
this.total=totalPage;
}

public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}
  3、UnitService类获取SqlSession,利用mybatis的RowBounds进行分页,执行sql语句获得结果集

public class UnitService
{
private static UnitService unitService = null;
Logger LOG = Logger.getLogger(DeptService.class);
private UnitService(){}
public static UnitService getInstance(){
if(unitService==null){
unitService=new UnitService();
}
return unitService;
}

//分页查询单位
public Page queryQyDw(Map<String,Object> params,int currentPage,int pageSize) throws Exception{
List<QyDw> units = null;
int count = 0;
SqlSession session=MybatisUtil.getSqlSessionFactory().openSession();
try{
IunitDao manager=session.getMapper(IunitDao.class);
units=(List<QyDw>)session.selectList("com.xinfeijinxin.qy.dao.IunitDao.queryQyDw", params,new RowBounds((start-1)*Conv.pageSize, limit));
count = manager.queryQyDwCount();
}catch(Exception e){
}finally{
session.close();
}

Page page=new Page(start,count);//初始化分页数据
page.setResult(units);//封装对象
return page;
}
}
  4、IunitDao.java 对应UnitDao.xml查询语句

public interface IunitDao
{
/**
* 查询单位列表
*/
public List<QyDw> queryQyDw(Map<String,Object> map);
}
  5、UnitDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace应对应接口路径-->
<mapper namespace="com.xinfeijinxin.qy.dao.IunitDao">
<!--查询记录,map参数可以根据情况去掉-->
<select id="queryQyDw" parameterType="map" resultType="com.xinfeijinxin.qy.bean.QyDw">
select dwid,dwmc,dwjc,sjdw,dwlx from qy_dw where 1=1
<if test="keyword!=null and keyword !=''">
and dwmc like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and dwjc like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and sjdw like CONCAT('%','${keyword}','%' )
</if>
<if test="keyword!=null and keyword !=''">
and dwlx like CONCAT('%','${keyword}','%' )
</if>
</select>

<!-- 查询记录总数-->
<select id="queryQyDwCount" resultType="int">
select count(*) from qy_dw
</select>
</mapper>
  6、Action封装前台数据

public class UnitAction extends BaseAction
{
//getter setter()。。。。
private List<QyDw> units=null;
private Page page=null;
private QyDw unit;
//分页查询单位
public String list()
{
// 分页信息设置,接受前台参数
if (page == null)
page = new Page();
// 如果当前页为0,则设置当前页为1
if (page.getCurPage() == 0) {
page.setCurPage(1);
}
try{
Map<String,Object> map=new HashMap<String,Object>();
//map.put("keyword","学");
//将page传至前台
page=UnitService.getInstance().queryQyDw(map, page.getCurPage(), Conv.pageSize);
}catch(DBException e){
logger.error(e.getMessage());
}
return LIST;
}
}
  7、BaseAction,设置统一返回的字符串,获取request和response

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class BaseAction extends ActionSupport{
protected HttpServletRequest request; // request
protected HttpServletResponse response; // response
protected ServletContext servletConext; // servletContext
protected HttpSession session; // session
public final String SUCCESS = "success";//成功
protected String ADD = "add"; // 返回增加
protected String DELETE = "delete"; // 返回删除
protected String UPDATE = "update"; // 返回修改
protected String LIST = "list"; // 返回修改
protected String EXCEPTION="exception"; //返回异常
Logger logger = Logger.getLogger(BaseAction.class);

public HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public ServletContext getServletConext() {
return ServletActionContext.getServletContext();
}
public void setServletConext(ServletContext servletConext) {
this.servletConext = servletConext;
}
public HttpSession getSession() {
return ServletActionContext.getRequest().getSession();
}
}

  8、前台链接

<div class="btn" style="text-align: center;">
<s:if test="page.curPage <= 1">
<img src="images/firstpage2.png" />
<img src="images/prepage2.png" />
</s:if>
<s:else>
<a href="admin/Unit_list.action?page.curPage=1"><img
src="images/firstpage.png" /> </a>
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.curPage-1}" />"><img
src="images/prepage.png" /> </a>
</s:else>
<s:if test="page.curPage < page.total">
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.curPage+1}" />"><img
src="images/nextpage.PNG" /> </a>
<a
href="admin/Unit_list.action?page.curPage=<s:property value="%{page.total}" />"><img
src="images/lastpage.png" /> </a>
</s:if>
<s:else>
<img src="images/nextpage2.PNG" />
<img src="images/lastpage2.png" />
</s:else>
<select id="page" name="page.curPage"
style="width: 50px; vertical-align: middle;" onchange="jump()">
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="page.total" />
<s:iterator>
<option value="<s:property value="current-1" />">
<s:property value="current-1" />
</option>
</s:iterator>
</s:bean>
</select>
<script type="text/javascript">
var num = '${page.curPage}';
document.getElementById('page').options[num - 1].selected = true;
</script>

<s:property value="%{page.curPage}" />
页 共
<s:property value="%{page.total}" />
页 共
<s:property value="%{page.sum}" />
记录
</div>
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305481-1-1.html 上篇帖子: Struts2+Spring+Mybatis+Junit 测试 下篇帖子: mybatis自动生成sql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表