如何通过spring-springmvc-jdbc实现分页查询?

UserController.java

  //分页查询用户信息
    @RequestMapping(value="/userlist.html")
  	public String getUserList(Model model,
  							@RequestParam(value="queryname",required=false) String queryUserName,
  							@RequestParam(value="queryUserRole",required=false) String queryUserRole,
  							@RequestParam(value="pageIndex",required=false) String pageIndex){
  		
  		
  	
  		//设置页面容量
      	int pageSize = Constans.pageSize;
      	
      	//当前页码
      	int currentPageNo = 1;
  	
  		if(queryUserName == null){
  			queryUserName = "";
  		}
  		
  		int _queryUserRole = 0;		
  		if(queryUserRole != null && !queryUserRole.equals("")){
  			_queryUserRole = Integer.parseInt(queryUserRole);
  		}
  		
  		//当前页
      	if(pageIndex != null){
      		try{
      			currentPageNo = Integer.valueOf(pageIndex);
      		}catch(NumberFormatException e){
      			return "redirect:/user/syserror.html";
      			//response.sendRedirect("syserror.jsp");
      		}
      	}
      	
      	
      	//获得总记录数,其中涉及到一个问题:两个参数,若是只是传入一个,如何处理?	
      	int totalCount	= userService.getUserCount(queryUserName,_queryUserRole);
      	
      	//总页数
      	PageSupport pages=new PageSupport();
      	pages.setCurrentPageNo(currentPageNo);
      	//通过总记录数除以页面容量达到总页数
      	pages.setPageSize(pageSize);
      	pages.setTotalCount(totalCount);
      	int totalPageCount = pages.getTotalPageCount();
      	
      	//控制首页和尾页
      	if(currentPageNo < 1){
      		currentPageNo = 1;
      	}else if(currentPageNo > totalPageCount){
      		currentPageNo = totalPageCount;
      	}
      	
    	List<User> userList = null;
    	//获得用户信息(涉及到一个连表查询,获得用户角色姓名userRoleName)
  		userList = userService.getUserList(queryUserName,_queryUserRole,currentPageNo,pageSize);
  		model.addAttribute("userList", userList);
  		
  		List<Role> roleList = null;
  		//获得用户角色信息(用于前端页面的下拉列表的显示所有用户角色的选项)
  		roleList = roleService.getRoleList();
  		model.addAttribute("roleList", roleList);
  		
  		model.addAttribute("queryUserName", queryUserName);
  		model.addAttribute("queryUserRole", queryUserRole);
  		model.addAttribute("totalPageCount", totalPageCount);
  		model.addAttribute("totalCount", totalCount);
  		model.addAttribute("currentPageNo", currentPageNo);
  		
  		return "userlist";
  	}
    
  	//如果出现一个异常,使用全局异常方法,跳出一个友好提示异常页面(需要在springmvc-servlet文件中事先配置)
  	@RequestMapping(value="/syserror.html")
  	public String sysError(){
  		return "syserror";
  	}
 
        
package cn.kgc.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import cn.kgc.dao.BaseDao;
import cn.kgc.dao.UserDao;
import cn.kgc.pojo.User;
@Service
public class UserServiceImpl implements UserService {
     
	     @Resource
	     private UserDao userDao;
	 
	@Override
	public User login(String userCode, String userPassword) {
		// TODO Auto-generated method stub
		Connection connection=null;
		User user=null;
		try{
			connection=BaseDao.getConnection();
			user=userDao.getLoginUser(connection,userCode);
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			BaseDao.closeResource(connection, null, null);
		}
		if(user!=null){
			//匹配密码
			if(!user.getUserPassword().equals(userPassword)){
				user=null;
			}
		}
		
	return user;
	}

	@Override
	public List<User> getUserList(String queryUserName, int queryUserRole,
			int currentPageNo, int pageSize) {
		// TODO Auto-generated method stub
		Connection connection=null;
		List<User> userList=null;
		try{
			connection=BaseDao.getConnection();
			userList=userDao.getUserList(connection,queryUserName,queryUserRole,currentPageNo,pageSize);
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			BaseDao.closeResource(connection, null, null);
		}
		return userList;
	}

	@Override
	public int getUserCount(String queryUserName, int queryUserRole) {
		// TODO Auto-generated method stub
		Connection connection = null;
		int count = 0;
		System.out.println("queryUserName ---- > " + queryUserName);
		System.out.println("queryUserRole ---- > " + queryUserRole);
		try {
			//连接数据库对象
			connection = BaseDao.getConnection();
			count = userDao.getUserCount(connection, queryUserName,queryUserRole);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			BaseDao.closeResource(connection, null, null);
		}
		return count;
	}

}

package cn.kgc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;



import cn.kgc.pojo.User;
@Repository
public class UserDaoImpl implements UserDao {

	@Override
	public User getLoginUser(Connection connection, String userCode)
			throws Exception {
		// TODO Auto-generated method stub
		PreparedStatement pstm=null;
		ResultSet rs=null;
		User user=null;
		if(connection!=null){
			String sql="select * from smbms_user where userCode=?";
			Object[] params={userCode};
			
			rs=BaseDao.execute(connection, pstm, rs, sql, params);
			System.out.println(rs);
			if(rs.next()){
				user=new User();
				user.setId(rs.getInt("id"));
				user.setUserCode(rs.getString("userCode"));
				user.setUserName(rs.getString("userName"));
				user.setUserPassword(rs.getString("userPassword"));
				user.setGender(rs.getInt("gender"));
				user.setBirthday(rs.getDate("birthday"));
				user.setPhone(rs.getString("phone"));
				user.setAddress(rs.getString("address"));
				user.setUserRole(rs.getInt("userRole"));
				user.setCreatedBy(rs.getInt("createdBy"));
				user.setCreationDate(rs.getTimestamp("creationDate"));
				user.setModifyBy(rs.getInt("modifyBy"));
				user.setModifyDate(rs.getTimestamp("modifyDate"));
				
			}
			BaseDao.closeResource(null, pstm, rs);
		}
		return user;
	}

	@Override
	public List<User> getUserList(Connection connection, String userName,
			int userRole, int currentPageNo, int pageSize) throws Exception {
		// TODO Auto-generated method stub
		PreparedStatement pstm=null;
		ResultSet rs=null;
		List<User> userList=new ArrayList<User>();
		if(connection!=null){
			 StringBuffer sql=new StringBuffer();
			 sql.append("select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.userRole=r.id");
			 List<Object> list=new ArrayList<Object>();
			 if(!StringUtils.isEmpty(userName)){
				 sql.append(" and u.userName like ?");
				 list.add("%"+userName+"%");
			 }
			 
			 if(userRole>0){
				 sql.append(" and u.userRole=?");
				 list.add(userRole);
			 }
			 
			 sql.append(" order by creationDate DESC limit ?,?");
			 currentPageNo=(currentPageNo-1)*pageSize;
			  list.add(currentPageNo);
			  list.add(pageSize);
			  
			  Object[] params=list.toArray();
			  System.out.println(sql.toString());
			  rs=BaseDao.execute(connection, pstm, rs, sql.toString(), params);
			     while(rs.next()){
			    	 User _user=new User();
			    	 _user.setId(rs.getInt("id"));
			    	 _user.setUserCode(rs.getString("userCode"));
			    	 _user.setUserName(rs.getString("userName"));
			    	 _user.setGender(rs.getInt("gender"));
			    	 _user.setBirthday(rs.getDate("birthday"));
			    	 _user.setPhone(rs.getString("phone"));
			    	 _user.setUserRole(rs.getInt("userRole"));
			    	 _user.setUserRoleName(rs.getString("userRoleName"));
			    	 
			    	 userList.add(_user);
			    	 
			     }
			     BaseDao.closeResource(null, pstm, rs);
		}
		return userList;
	}

	@Override
	public int getUserCount(Connection connection, String userName, int userRole)
			throws Exception {
		PreparedStatement pstm = null;
		ResultSet rs = null;
		int count = 0;
		if(connection != null){
			//StringBuffer拼sql语句解决了2个参数,但是不全赋值的情况,2个参数,1个参数,0个参数需要拼接sql语句
			StringBuffer sql = new StringBuffer();
			sql.append("select count(1) as count from smbms_user u,smbms_role r where u.userRole = r.id");
			List<Object> list = new ArrayList<Object>();
			if(!StringUtils.isEmpty(userName)){
				sql.append(" and u.userName like ?");
				list.add("%"+userName+"%");
			}
			if(userRole > 0){
				sql.append(" and u.userRole = ?");
				list.add(userRole);
			}
			Object[] params = list.toArray();
			System.out.println("sql ----> " + sql.toString());
			rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
			if(rs.next()){
				count = rs.getInt("count");
			}
			
		}
		BaseDao.closeResource(connection, pstm, rs);
		return count;
	}

}
jsp页面
           <div class="search">
           		<form method="post" action="${pageContext.request.contextPath }/user/userlist.html">
					<input name="method" value="query" class="input-text" type="hidden">
					 <span>用户名:</span>
					 <input name="queryname" class="input-text"	type="text" value="${queryUserName }">
					 
					 <span>用户角色:</span>
					 <select name="queryUserRole">
						<c:if test="${roleList != null }">
						   <option value="0">--请选择--</option>
						   <c:forEach var="role" items="${roleList}">
						   		<option <c:if test="${role.id == queryUserRole }">selected="selected"</c:if>
						   		value="${role.id}">${role.roleName}</option>
						   </c:forEach>
						</c:if>
	        		</select>
					 
					 <input type="hidden" name="pageIndex" value="1"/>
					 <input	value="查 询" type="submit" id="searchbutton">
					 <a href="${pageContext.request.contextPath}/jsp/useradd.jsp" >添加用户</a>
				</form>
            </div>
            <!--用户-->
            <table class="providerTable" cellpadding="0" cellspacing="0">
                <tr class="firstTr">
                    <th width="10%">用户编码</th>
                    <th width="20%">用户名称</th>
                    <th width="10%">性别</th>
                    <th width="10%">年龄</th>
                    <th width="10%">电话</th>
                    <th width="10%">用户角色</th>
                    <th width="30%">操作</th>
                </tr>
                   <c:forEach var="user" items="${userList }" varStatus="status">
					<tr>
						<td>
						<span>${user.userCode }</span>
						</td>
						<td>
						<span>${user.userName }</span>
						</td>
						<td>
							<span>
								<c:if test="${user.gender==1}">男</c:if>
								<c:if test="${user.gender==2}">女</c:if>
							</span>
						</td>
						<td>
					<%-- 	<span>${user.age}</span> --%>
						</td>
						<td>
						<span>${user.phone}</span>
						</td>
						<td>
							<span>${user.userRoleName}</span>
						</td>
						<td>
						<span><a class="viewUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/read.png" alt="查看" title="查看"/></a></span>
						<span><a class="modifyUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/xiugai.png" alt="修改" title="修改"/></a></span>
						<span><a class="deleteUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/schu.png" alt="删除" title="删除"/></a></span>
						</td>
					</tr>
				</c:forEach>
			</table>
			<input type="hidden" id="totalPageCount" value="${totalPageCount}"/>
		  	<c:import url="rollpage.jsp">
	          	<c:param name="totalCount" value="${totalCount}"/>
	          	<c:param name="currentPageNo" value="${currentPageNo}"/>
	          	<c:param name="totalPageCount" value="${totalPageCount}"/>
          	</c:import>
        </div>




猜你喜欢

转载自blog.csdn.net/java_stud/article/details/81014259