`
minghe_zy
  • 浏览: 123460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SpringMVC+JDBC:分页示例

 
阅读更多
一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5
二 工程相关图片:


三 基本上参照之前示例修改得来,重点关注SimpleJdbcTemplate与JdbcTemplate用法
以下只列出比较重要的类
UserController.java
Java代码
  1. package com.liuzd.sj.web;   
  2.   
  3. import java.util.List;   
  4.   
  5. import javax.annotation.Resource;   
  6. import javax.servlet.http.HttpServletRequest;   
  7.   
  8. import org.springframework.stereotype.Controller;   
  9. import org.springframework.web.bind.annotation.PathVariable;   
  10. import org.springframework.web.bind.annotation.RequestMapping;   
  11. import org.springframework.web.bind.annotation.SessionAttributes;   
  12. import org.springframework.web.servlet.ModelAndView;   
  13.   
  14. import com.liuzd.page.Page;   
  15. import com.liuzd.sj.entity.User;   
  16. import com.liuzd.sj.service.UserService;   
  17.   
  18. @Controller  
  19. @RequestMapping("/user")   
  20. @SessionAttributes("userList")   
  21. public class UserController extends BaseController{   
  22.        
  23.     private UserService userService;   
  24.        
  25.   
  26.     public UserService getUserService() {   
  27.         return userService;   
  28.     }   
  29.        
  30.     @Resource  
  31.     public void setUserService(UserService userService) {   
  32.         this.userService = userService;   
  33.     }      
  34.   
  35.        
  36.     @RequestMapping("/userList")   
  37.     public ModelAndView userList(HttpServletRequest request){   
  38.         StringBuilder querySql = new StringBuilder();   
  39.         querySql.append("select * from users where 1=1 ");   
  40.            
  41.         String oracleQuerySql = querySql.toString();   
  42.         //获取总条数   
  43.         Long totalCount = new Long(this.getUserService().pageCounts(oracleQuerySql));   
  44.         //设置分页对象   
  45.         Page page = executePage(request,oracleQuerySql,totalCount," id desc ");        
  46.            
  47.         ModelAndView mv = new ModelAndView();          
  48.         //查询集合         
  49.         List<User> users = this.getUserService().pageList(page.getQuerySql());   
  50.         mv.addObject("userList",users);                
  51.         mv.setViewName("userList");            
  52.         return mv;   
  53.     }   
  54.        
  55.        
  56.        
  57.     @RequestMapping("/addUser")   
  58.     public ModelAndView addUser(HttpServletRequest request,User user){   
  59.         System.out.println("ADD USER: "+ user);    
  60.         this.userService.addUser(user);        
  61.         return userList(request);   
  62.     }   
  63.        
  64.     @RequestMapping("/toAddUser")   
  65.     public String toAddUser(){         
  66.         return "addUser";   
  67.     }   
  68.        
  69.     @RequestMapping("/delUser/{id}")   
  70.     public ModelAndView delUser(@PathVariable("id") String id,HttpServletRequest request){   
  71.         this.userService.delUser(new User().setId(id));   
  72.         return userList(request);   
  73.     }   
  74.        
  75.     @RequestMapping("/getUser/{id}")   
  76.     public ModelAndView getUser(@PathVariable("id") String id){   
  77.         User user = this.userService.getUserById(new User().setId(id));   
  78.         ModelAndView mv = new ModelAndView("updateUser");   
  79.         mv.addObject("user",user);   
  80.         return mv;   
  81.     }      
  82.        
  83.     @RequestMapping("/updateUser")   
  84.     public ModelAndView editUser(User user,HttpServletRequest request){    
  85.         System.out.println("编辑: "+user);   
  86.         this.userService.editUser(user);   
  87.         return userList(request);   
  88.     }          
  89.        
  90. }  

BaseController.java

Java代码
  1. package com.liuzd.sj.web;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4.   
  5. import com.liuzd.page.Page;   
  6. import com.liuzd.page.PageState;   
  7. import com.liuzd.page.PageUtil;   
  8.   
  9. /**     
  10.  *Title:       
  11.  *Description:       
  12.  *Copyright: Copyright (c) 2011     
  13.  *Company:http://liuzidong.iteye.com/      
  14.  *Makedate:2011-5-23 下午03:31:03     
  15.  * @author liuzidong     
  16.  * @version 1.0     
  17.  * @since 1.0      
  18.  *     
  19.  */  
  20. public class BaseController {   
  21.        
  22.     /**  
  23.      * oracel的三层分页语句      
  24.      * 子类在展现数据前,进行分页计算!  
  25.      * @param querySql  查询的SQL语句,未进行分页  
  26.      * @param totalCount 根据查询SQL获取的总条数  
  27.      * @param columnNameDescOrAsc 列名+排序方式 : ID DESC or ASC  
  28.      */  
  29.     protected Page executePage(HttpServletRequest request,String querySql,Long totalCount,String columnNameDescOrAsc){   
  30.         String oracleSql = PageUtil.createQuerySql(querySql,columnNameDescOrAsc);   
  31.         if(null == totalCount){   
  32.             totalCount = 0L;   
  33.         }   
  34.         /**页面状态,这个状态是分页自带的,与业务无关*/  
  35.         String pageAction = request.getParameter("pageAction");   
  36.         String value = request.getParameter("pageKey");   
  37.            
  38.         /**获取下标判断分页状态*/  
  39.         int index = PageState.getOrdinal(pageAction);                  
  40.            
  41.         Page page = null;          
  42.         /**  
  43.          * index < 1 只有二种状态  
  44.          * 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1  
  45.          * 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算  
  46.          * */  
  47.         Page sessionPage = getPage(request);   
  48.            
  49.         if(index < 1){              
  50.             page = PageUtil.inintPage(oracleSql,totalCount,index,value,sessionPage);   
  51.         }else{                 
  52.             page = PageUtil.execPage(index,value,sessionPage);   
  53.         }          
  54.         setSession(request,page);      
  55.         return page;   
  56.     }      
  57.        
  58.     private Page getPage(HttpServletRequest request) {   
  59.         Page page = (Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);   
  60.         if(page == null){   
  61.             page = new Page();   
  62.         }   
  63.         return page;           
  64.     }      
  65.        
  66.     private void setSession(HttpServletRequest request,Page page) {   
  67.         request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY,page);         
  68.     }      
  69.   
  70. }  
UserRowMapper.java
Java代码
  1. package com.liuzd.sj.dao;   
  2.   
  3. import java.sql.ResultSet;   
  4. import java.sql.SQLException;   
  5.   
  6. import org.springframework.jdbc.core.RowMapper;   
  7.   
  8. import com.liuzd.sj.entity.User;   
  9.   
  10. public class UserRowMapper implements RowMapper<User> {      
  11.        
  12.        
  13.     public UserRowMapper(){}       
  14.        
  15.     public User mapRow(ResultSet rs, int index) throws SQLException {                  
  16.         User user = new User(   
  17.                 rs.getString("id"),   
  18.                 rs.getString("name"),   
  19.                 rs.getString("password"),   
  20.                 rs.getString("address"),   
  21.                 rs.getString("sex"),   
  22.                 rs.getInt("age")   
  23.         );         
  24.         return user;   
  25.     }   
  26. }  
UserDAOImpl.java
Java代码
  1. package com.liuzd.sj.dao.impl;   
  2.   
  3. import java.sql.PreparedStatement;   
  4. import java.sql.SQLException;   
  5. import java.util.List;   
  6.   
  7. import javax.annotation.Resource;   
  8.   
  9. import org.springframework.jdbc.core.BeanPropertyRowMapper;   
  10. import org.springframework.jdbc.core.PreparedStatementSetter;   
  11. import org.springframework.stereotype.Repository;   
  12.   
  13. import com.liuzd.sj.dao.UserDAO;   
  14. import com.liuzd.sj.dao.UserRowMapper;   
  15. import com.liuzd.sj.entity.User;   
  16.   
  17. @Repository("userDao")   
  18. public class UserDAOImpl implements UserDAO   
  19. {   
  20.        
  21.     private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(?,?,?,?,?,?)";   
  22.     private static final String UPDATE = "update users set name=?,age=?,sex=?,address=?,password=? where id=?";   
  23.     private static final String GET = "select * from users where id=?";   
  24.     private static final String CHECK = "select count(1) from users where name=? and password=?";   
  25.     private static final String SELECT = "select * from users";   
  26.     private static final String DEL = "delete users where id=?";   
  27.        
  28.     private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;       
  29.   
  30.     public org.springframework.jdbc.core.JdbcTemplate getJdbcTemplate() {   
  31.         return jdbcTemplate;   
  32.     }   
  33.   
  34.     @Resource  
  35.     public void setJdbcTemplate(   
  36.             org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) {   
  37.         this.jdbcTemplate = jdbcTemplate;   
  38.     }      
  39.        
  40.   
  41.     public void addUser(final User user) {   
  42.         getJdbcTemplate().update(INSERT, new PreparedStatementSetter(){   
  43.             public void setValues(PreparedStatement ps)   
  44.                     throws SQLException {   
  45.                 int i = 0;         
  46.                 ps.setString(++i, user.getId());   
  47.                 ps.setString(++i, user.getName());   
  48.                 ps.setInt(++i, user.getAge());   
  49.                 ps.setString(++i,user.getSex());   
  50.                 ps.setString(++i,user.getAddress());   
  51.                 ps.setString(++i,user.getPassword());              
  52.             }              
  53.         });   
  54.            
  55.            
  56.     }   
  57.   
  58.     public int checkUserExits(User user) {                 
  59.         return getJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());   
  60.     }   
  61.   
  62.     public void delUser(User user) {   
  63.         getJdbcTemplate().update(DEL, user.getId());   
  64.     }   
  65.   
  66.     public void editUser(final User user) {        
  67.         getJdbcTemplate().update(UPDATE, new PreparedStatementSetter(){   
  68.             public void setValues(PreparedStatement ps)   
  69.                     throws SQLException {   
  70.                 int i = 0;                         
  71.                 ps.setString(++i, user.getName());   
  72.                 ps.setInt(++i, user.getAge());   
  73.                 ps.setString(++i,user.getSex());   
  74.                 ps.setString(++i,user.getAddress());   
  75.                 ps.setString(++i,user.getPassword());      
  76.                 ps.setString(++i, user.getId());   
  77.             }              
  78.         });   
  79.     }   
  80.   
  81.     public List<User> getAllUser() {         
  82.         return getJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));   
  83.     }   
  84.   
  85.     public User getUserById(User user) {           
  86.         return getJdbcTemplate().queryForObject(GET, new UserRowMapper(),user.getId());   
  87.     }   
  88.   
  89.     public int pageCounts(String querySql) {           
  90.         return getJdbcTemplate().queryForInt("select count(1) from("+querySql+")");   
  91.     }   
  92.   
  93.     public List<User> pageList(String querySql) {        
  94.         return getJdbcTemplate().query(querySql, new UserRowMapper());   
  95.     }   
  96.   
  97. }  
UserDAOImpl2.java
Java代码
  1. package com.liuzd.sj.dao.impl;   
  2.   
  3. import java.util.List;   
  4. import java.util.Map;   
  5.   
  6. import javax.annotation.Resource;   
  7.   
  8. import org.springframework.jdbc.core.BeanPropertyRowMapper;   
  9. import org.springframework.stereotype.Repository;   
  10.   
  11. import com.liuzd.sj.dao.UserDAO;   
  12. import com.liuzd.sj.entity.User;   
  13. import com.liuzd.util.BeanToMapUtil;   
  14.   
  15. @Repository("userDao2")   
  16. public class UserDAOImpl2 implements UserDAO   
  17. {   
  18.        
  19.     private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(:id,:name,:age,:sex,:address,:password)";   
  20.     private static final String UPDATE = "update users set name=:name,age=:age,sex=:sex,address=:address,password=:password where id=:id";   
  21.     private static final String GET = "select * from users where id=?";   
  22.     private static final String CHECK = "select count(1) from users where name=? and password=?";   
  23.     private static final String SELECT = "select * from users";   
  24.     private static final String DEL = "delete users where id=?";   
  25.        
  26.     private org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate;   
  27.        
  28.     public org.springframework.jdbc.core.simple.SimpleJdbcTemplate getSimpleJdbcTemplate() {   
  29.         return simpleJdbcTemplate;   
  30.     }   
  31.   
  32.     @Resource  
  33.     public void setSimpleJdbcTemplate(   
  34.             org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate) {   
  35.         this.simpleJdbcTemplate = simpleJdbcTemplate;   
  36.     }      
  37.        
  38.   
  39.     public void addUser(final User user) {   
  40.         Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);          
  41.         getSimpleJdbcTemplate().update(INSERT, userMap);           
  42.     }   
  43.   
  44.     public int checkUserExits(User user) {             
  45.         return getSimpleJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());   
  46.     }   
  47.   
  48.     public void delUser(User user) {   
  49.         getSimpleJdbcTemplate().update(DEL, user.getId());   
  50.     }   
  51.   
  52.     public void editUser(final User user) {                
  53.         Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);          
  54.         getSimpleJdbcTemplate().update(UPDATE, userMap);   
  55.     }   
  56.   
  57.     public List<User> getAllUser() {         
  58.         return getSimpleJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));   
  59.     }   
  60.   
  61.     public User getUserById(User user) {           
  62.         return getSimpleJdbcTemplate().queryForObject(GET, new BeanPropertyRowMapper<User>(User.class),user.getId());   
  63.     }   
  64.   
  65.     public int pageCounts(String querySql) {           
  66.         return getSimpleJdbcTemplate().queryForInt("select count(1) from("+querySql+")");   
  67.     }   
  68.   
  69.     public List<User> pageList(String querySql) {        
  70.         return getSimpleJdbcTemplate().query(querySql, new BeanPropertyRowMapper<User>(User.class));   
  71.     }   
  72.   
  73. }  
 springmvc.xml
Java代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:p="http://www.springframework.org/schema/p"    
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:mvc="http://www.springframework.org/schema/mvc"      
  7.     xsi:schemaLocation="   
  8.         http://www.springframework.org/schema/beans    
  9.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  10.         http://www.springframework.org/schema/context    
  11.         http://www.springframework.org/schema/context/spring-context-3.0.xsd   
  12.         http://www.springframework.org/schema/mvc       
  13.         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">   
  14.     <!--    
  15.          自动搜索@Controller标注的类   
  16.          用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。   
  17.      -->   
  18.     <context:component-scan base-package="com.liuzd.sj.web" />       
  19.        
  20.      <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->   
  21.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>   
  22.        
  23.  </beans>  
userList.jsp
Java代码
  1. <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>   
  2. <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  4. <html>   
  5.   <head>   
  6.     <%@ include file="/common/meta.jsp"%>   
  7.   </head>     
  8.   <body>   
  9.       <table width="60%" border="1" cellpadding="0" align="center">   
  10.             <thead>   
  11.                 <tr>   
  12.                     <th style="cursor: hand;" title="按姓名进行排序" onclick="sortPage('name')" valign="top">   
  13.                         姓名<font color='red'>${page.sortName eq "name" ? page.sortInfo : page.defaultInfo}</font>   
  14.                     </th>   
  15.                     <th style="cursor: hand;" title="按年龄进行排序" onclick="sortPage('age')" valign="top">   
  16.                         年龄<font color='red'>${page.sortName eq "age" ? page.sortInfo : page.defaultInfo}</font>   
  17.                     </th>   
  18.                     <th style="cursor: hand;" title="按性别进行排序" onclick="sortPage('sex')" valign="top">   
  19.                         性别<font color='red'>${page.sortName eq "sex" ? page.sortInfo : page.defaultInfo}</font>   
  20.                     </th>   
  21.                     <th style="cursor: hand;" title="按地址进行排序" onclick="sortPage('address')" valign="top">   
  22.                         地址<font color='red'>${page.sortName eq "address" ? page.sortInfo : page.defaultInfo}</font>   
  23.                     </th>   
  24.                     <th style="cursor: hand;" >   
  25.                         操作   
  26.                     </th>   
  27.                 </tr>   
  28.             </thead>   
  29.             <tbody>              
  30.   
  31.                 <c:forEach items="${userList}" var="user">   
  32.                     <tr align="center">   
  33.                         <td>   
  34.                             ${user.name}   
  35.                         </td>   
  36.                         <td>   
  37.                             ${user.age}   
  38.                         </td>   
  39.                         <td>   
  40.                             ${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}   
  41.                         </td>   
  42.                         <td>   
  43.                             ${user.address}   
  44.                         </td>   
  45.                         <td>   
  46.                             <a   
  47.                                 href="${pageContext.request.contextPath}/user/toAddUser.do">添加</a>   
  48.                             |   
  49.                             <a   
  50.                                 href="${pageContext.request.contextPath}/user/getUser/${user.id}.do">编辑</a>   
  51.                             |   
  52.                             <a   
  53.                                 href="${pageContext.request.contextPath}/user/delUser/${user.id}.do">删除</a>   
  54.                         </td>   
  55.                     </tr>   
  56.                 </c:forEach>   
  57.                 <jsp:include page="/page/page.jsp">   
  58.                     <jsp:param name="url" value="user/userList.do" />                    
  59.                 </jsp:include>   
  60.                    
  61.             </tbody>   
  62.         </table>   
  63.         <br>   
  64.         <a href="${pageContext.request.contextPath}/index.jsp">返回</a><br>        
  65.   </body>   
  66. </html>  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics