Spring mvc 联合查询+分页+条件搜索+页面局部刷新

Spring mvc+Hibernate 实现后台数据查询分页

jquery+jsp实现页面局部刷新

框架已经搭好 

一、数据联合查询

联合查询的表结构应相似,利用表别名和构照的联合信息表存储查询结果

1.定义联合查询的实体表UnionStudent.java

class UnionStudent{

private String name;

private String sex;

getter()..

setter()..

}

2.定义分页类PageConfig.java

class PageConfig{

private static int pageSize=10;//每页显示10条记录

private static int pageNo=1;//其实页为1

}

3.方法实现类  UnionStudentServiceImpl.java

@service

@Transactional(rollBackFor=RuntimeException.class)

class UnionStudentServiceImpl implments UnionStudentService{

@Autowired

private UserDao userDao;

/**

*分页方法

*pageConfig 分页类

*sex 搜索条件

*/

@Override

public List getInfoForPage(PageConfig pageConfig,String sex){
StringBuffer sBuffer=new StringBuffer();
String sql1="select t1.studentName as name,t2.studentSex as sex from student1 t1 ";
String sql1="select t2.studentName as name,t2.studentSex as sex from student2 t2 ";
String sql1="select t3.studentName as name,t3.studentSex as sex from student3 t3 ";
String conn="union all  ";
if(sex!=null){
sBuffer.append("select * from  ( ").append(sql1).append(conn).append(sql2).append(conn).append(sql3).append( " )   where sex='"+sex+"' ");
}else{
sBuffer.append(sql1).append(conn).append(sql2).append(conn).append(sql3);
}
Query query = userDao
.createSQLQuery(sBuffer.toString())
.addScalar("name", StringType.INSTANCE)
.addScalar("sex ", StringType.INSTANCE)
.setResultTransformer(
Transformers.aliasToBean(UnionStudent.class));
query.setFirstResult((pageConfig.pageNo - 1) * pageConfig.pageSize);
query.setMaxResults(pageConfig.pageSize);
List list = query.list();
return list;


}

/**

*获取满足要求的数据条数

*sex 搜索条件

*/

@Override
public int getSize( String sex){

StringBuffer sBuffer=new StringBuffer();
String sql1="select t1.studentName as name,t2.studentSex as sex from student1 t1 ";
String sql1="select t2.studentName as name,t2.studentSex as sex from student2 t2 ";
String sql1="select t3.studentName as name,t3.studentSex as sex from student3 t3 ";
String conn="union all  ";
if(sex!=null){
sBuffer.append("select * from  ( ").append(sql1).append(conn).append(sql2).append(conn).append(sql3).append( " )   where sex='"+sex+"' ");
}else{
sBuffer.append(sql1).append(conn).append(sql2).append(conn).append(sql3);
}
Query query = userDao
.createSQLQuery(sBuffer.toString())
.addScalar("name", StringType.INSTANCE)
.addScalar("sex ", StringType.INSTANCE)
.setResultTransformer(
Transformers.aliasToBean(UnionStudent.class));
List list = query.list();
if (list != null && list.size() != 0) {
return list.size();
} else {
return 0;
}
        }

}

4.Spring控制器类studentController.java

@Controller

public class studentController{

@Autowired

private UnionStudentService unionStudentService;


@RequsetMapping(value="/forPage")

@ResponseBody

public Map  forPage(HttpServletRequest request,Model model){

String sex = request.getParameter("sex");
String curPage = request.getParameter("currentPage");
PageConfig pageConfig = new PageConfig();
if (StringUtils.hasText(curPage)) {
pageConfig.pageNo = Integer.parseInt(curPage);
}
List unionStudnetList = unionStudentService.getForPage(pageConfig, sex);
int allPage = unionStudentService.getSize(sex);
int pageSize = (int) Math.ceil((double) allPage / pageConfig.pageSize);

Map map = new HashMap();
map.put("currentPage", pageConfig.pageNo);
map.put("allPage", allPage);
map.put("pageSize", pageSize);
map.put("unionStudnetList", unionStudnetList);
return map;

}

}

5.界面显示index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>




 











      ${pageSize}
         
      当前第
      ${currentPage}

        
             
             首页
             上一页
             下一页
             尾页     
         

       
        跳转到第




     



    你可能感兴趣的:(J2EE)