旅游管理系统:项目信息分页显示、查询

#Day03-01 项目信息分页显示

##1.在ProjectDao中添加分页相关方法:

   List<Project> findPageObjects(
   @Param("startIndex") int startIndex,
   @Param("pageSize") int pageSize);
 //当dao中的方法参数多余1个时要使用@Param注解定义参数.
   int getRowCount();

##2.在ProjectMapper.xml文件中添加方法对应的id

   <select id="findPageObjects"
                resultType="cn.tedu.ttms.product.entity.Project">
      select *
      from tms_projects
      order by createdTime desc
      limit #{startIndex},#{pageSize}
   </select>

   <select id="getRowCount"
                resultType="int">
           select count(*) from tms_projects;
   </select>

##3.在ProjectService接口及实现类中添加分页查询方法

          Map<String,Object> findPageObjects(int pageCurrent){
          int pageSize=2;
          int startIndex=(pageCurrent-1)*pageSize;
          <!-- 获取当前页数据 -->
          List<Project> list=
          projectDao.findPageObjects(startIndex,pageSize);
         <!--  获取分页信息(总记录数,总页数,.....)  -->
          int rowCount=projectDao.getRowCount();
          int pageCount=rowCount/pageSize;
          if(rowCount%pageSize!=0){
              pageCount++;
          }
       <!--   封装分页信息(构建PageObject对象:VO:value object)
          将当前数据以及分页信息封装到map,然后返回.  -->
   }

##4.编写控制层方法并测试

   @RequestMapping("doGetPageObjects")
   @ResponseBody
   public Map<String,Object> doGetPageObjects(
             Integer pageCurrent){
            return projectService.findPageObjects(pageCurrent);
    }

##5.编写客户端的project_list.js,page.js

   project_list.js
   $(document).ready(function(){
       doGetObjects();
   })
   function doGetObjects(){
       var url="project/doGetPageObjects.do";
       var pageCurrent=$("#pageId").data("pageCurrent");
       if(!pageCurrent)pageCurrent=1;
       var params={"pageCurrent":pageCurrent};
       $.getJSON(url,params,function(result){
                setTableBodyRows(result.list);
                setPagination(result.pageObject);
       })
   };
   function setTableBodyRows(result){....}

   page.js

   $(document).ready(function(){
        $("#pageId").on("click",".pre,.next,.first,.last",jumpToPage)
   })
   function setPagination(pageObject){
        $(".pageCount").html("总页数("+pageObject.pageCount+")");
        $(".pageCurrent").html("当前页("+pageObject.pageCurrent+")");
        $("#pageId").data("pageCount",pageObject.pageCount);
        $("#pageId").data("pageCurrent",pageObject.pageCurrent);
   }
   function jumpToPage(){
         var cValue=$(this).attr("class");
         var pageCurrent=$("#pageId").data("pageCurrent");
         var pageCount=$("#pageId").data("pageCount");
         if(cValue=="pre"&&pageCurrent>1){
            pageCurrent--;
         }
         .......
         $("#pageId").data("pageCurrent",pageCurrent);
         doGetObjects();
   }

#查询项目信息

##1.ProjectDao

 /**
	  * @param name 查询时用户输入的项目名
	  * @param valid 查询时用户输入的状态
	  * @param startIndex 分页查询时的起始位置
	  * @param pageSize 每页最多显示多少条记录
	  * @return 当前页数据
	  */
	 List<Project> findPageObjects(
	   @Param("name")String name,
	   @Param("valid")Integer valid,
	   @Param("startIndex") int startIndex,
	   @Param("pageSize") int pageSize);
	 
	 /**
	  * @return 返回记录总数
	  */
	 int getRowCount(
		 @Param("name")String name,
		 @Param("valid")Integer valid);

##2.ProjectMapper

<!-- 通过sql标签定义一个语句,后续其他元素用到了
          可以通过include标签进行包含即可 -->
   <sql id="whereQuery">
      <where>
        <if test="name!=null and name!=''">
           name like concat("%",#{name},"%")
        </if>
        <if test="valid!=null">
           and valid=#{valid}
        </if>
      </where>
    </sql>
    <select id="findPageObjects"
           resultType="cn.tedu.ttms.product.entity.Project">
      select *
      from tms_projects
      <include refid="whereQuery"/>
      order by createdTime desc
      limit #{startIndex},#{pageSize}
   </select>
   <select id="getRowCount"
           resultType="int">
      select count(*)
      from tms_projects
      <include refid="whereQuery"/>
   </select>

##3.ProjectService及其实现类

/**
	  * @param pageCurrent 当前页
	  * @return 获取当前页数据及分页信息
	  */
	 Map<String,Object> 
	 findPageObjects(String name,
			 Integer valid,
			 int pageCurrent);

@Override
	public Map<String, Object> findPageObjects(
			String name,Integer valid,int pageCurrent) {
		int pageSize=2;
		int startIndex=(pageCurrent-1)*pageSize;
		//获取当前页数据
		List<Project> list=
		projectDao.findPageObjects(
				name,valid,startIndex,pageSize);
		//获取总记录数并封装分页信息
		int rowCount=
				projectDao.getRowCount(name,valid);
		PageObject pageObject=new PageObject();
		pageObject.setRowCount(rowCount);
		pageObject.setPageSize(pageSize);
		pageObject.setPageCurrent(pageCurrent);
		pageObject.setStartIndex(startIndex);
		//将当前页数据以及分页信息封装到map
		Map<String,Object>  map=
				new HashMap<String,Object>();
		map.put("list", list);
		map.put("pageObject", pageObject);
		return map;
	}

##4.ProjectController

@RequestMapping("doGetPageObjects")
	  @ResponseBody
	  public Map<String,Object> doGetPageObjects(
	    		  String name,
	    		  Integer valid,
	    		  Integer pageCurrent){
		  log.info("name="+name);//乱码
		  log.info("valid="+valid);
		  log.info("pageCurrent="+pageCurrent);
		  Map<String,Object> map=
		  projectService.findPageObjects(
				  name,valid,pageCurrent);
		  log.info("map="+map);
		  
		  return map;//map对象转换为json串的表示形式如下
		  /*{
		     "list":[{id:1,name:"环球游",...},{...}] 
		     "pageObject":{pageCurrent:1,pageCount:2,...}
		    }
		   */
	  }

##5.页面js

$(document).ready(function(){
	//在查询按钮上注册点击事件
	 $("#queryFormId")
	 .on("click",".btn-search",doQueryObjects);
	 //页面加载完成执行数据的获取操作
	  doGetObjects();
})
/*点击查询按钮时执行此方法*/
function doQueryObjects(){
	//1.初始化当前页码数据
	$("#pageId").data("pageCurrent",1);
	//2.根据条件查询数据
	doGetObjects();
}
function doGetObjects(){
//	var url="project/doGetObjects.do";
	/*$.ajax({
		url:url,
		type:"get",
		dataType:"json",
		success:function(result){
		}
	});*/
	var url="project/doGetPageObjects.do"
	var pageCurrent = $("#pageId").data("pageCurrent");
	if(!pageCurrent){
		pageCurrent=1;
	} 
	var param={"pageCurrent":pageCurrent};
	param.projectName=$("#searchNameId").val();
	param.valid=$("#searchValidId").val();
	$.getJSON(url,param,function(result){
		console.log(result);//json对象
		//将数据显示在table的tbody位置
		setTableBodyRows(result.list);
		setPagination(result.pageObject);
	});
}
/*将数据填充在table对象的body中*/
function setTableBodyRows(data){//扩展作业
	 //1.获得tbody对象
	 var tBody=$("#tbodyId");
	 tBody.empty();
	 //2.迭代数据集result
	 //for(var i=0;i<result.length;i++){}
	 for(var i in data){
	 //2.1构建一个tr对象
	 var tr=$("<tr></tr>");
	 //2.2构建每行td对象(一行有多个)
	 //var td0=$("<td></td>");
	 //....
	 //2.3在td对象内容填充具体数据
	 //td0.append(result[id].id);
	 //....
	 var tds="<td><input type='checkbox' name='checkId' value='"+data[i].id+"'></td>"+
	         "<td>"+data[i].code+"</td>"+
	         "<td>"+data[i].name+"</td>"+
	         "<td>"+data[i].beginDate+"</td>"+
	         "<td>"+data[i].endDate+"</td>"+
	         "<td>"+(data[i].valid?"有效":"无效")+"</td>"+
	         "<td><input type='button'  class='btn btn-default' value='修改'/></td>";
	 //2.4将td添加到tr对象中(一行要放多个)
	 tr.append(tds);
	 //2.5将tr追加到tbody中
	 tBody.append(tr);
	 }
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值