首页  >  文章  >  数据库  >  SpringMVC JDBC:分页示例_MySQL

SpringMVC JDBC:分页示例_MySQL

WBOY
WBOY原创
2016-05-31 08:46:401672浏览

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


三 基本上参照之前示例修改得来,重点关注SimpleJdbcTemplate与JdbcTemplate用法
以下只列出比较重要的类
UserController.java

Java代码  

  1. 套餐 com.liuzd.sj.web;  
  2.   
  3. 导入 java.util.List;  
  4.   
  5. 导入 javax.annotation.Resource;  
  6. 导入 javax.servlet.http.HttpServletRequest;  
  7.   
  8. 导入 org.springframework.stereotype.Controller;  
  9. 导入 org.springframework.web.bind.annotation.PathVariable;  
  10. 导入 org.springframework.web.bind.annotation.RequestMapping;  
  11. 导入 org.springframework.web.bind.annotation.SessionAttributes;  
  12. 导入 org.springframework.web.servlet.ModelAndView;  
  13.   
  14. 导入 com.liuzd.page.Page;  
  15. 导入 com.liuzd.sj.entity.User;  
  16. 导入 com.liuzd.sj.service.UserService;  
  17.   
  18. @Controller  
  19. @RequestMapping("/user")  
  20. @SessionAttributes("userList")  
  21. 公共  UserController 扩展 BaseController{  
  22.       
  23.     私有 UserService userService;  
  24.       
  25.   
  26.     公共 UserService getUserService() {  
  27.         返回 userService;  
  28.     }  
  29.       
  30.     @Resource  
  31.     public void setUserService(UserService userService) {  
  32.         这个.userService = userService;  
  33.     }     
  34.   
  35.       
  36.     @RequestMapping("/userList")  
  37.     公共 ModelAndView userList(HttpServletRequest 请求){  
  38.         StringBuilder querySql = new StringBuilder();  
  39.         querySql.append("从用户中选择 * ,其中 1=1 ");  
  40.           
  41.         String oracleQuerySql = querySql.toString();  
  42.         //获取总条数  
  43.         Long totalCount = new Long(这个.getUserService().pageCounts(oracleQuerySql));  
  44.         //设置分页对象  
  45.         Page page = executePage(request,oracleQuerySql,totalCount," id desc ");       
  46.           
  47.         ModelAndView mv =  ModelAndView();         
  48.         //查询集合        
  49.         列表 用户 = 这个.getUserService().pageList(page.getQuerySql());  
  50.         mv.addObject("userList",users);               
  51.         mv.setViewName("userList");           
  52.         返回 mv;  
  53.     }  
  54.       
  55.       
  56.       
  57.     @RequestMapping("/addUser")  
  58.     public ModelAndView addUser(HttpServletRequest 请求,User 用户){  
  59.         System.out.println("添加用户:" 用户);   
  60.         这个.userService.addUser(user);       
  61.         返回 userList(请求);  
  62.     }  
  63.       
  64.     @RequestMapping("/toAddUser")  
  65.     public String toAddUser(){        
  66.         返回 "addUser";  
  67.     }  
  68.       
  69.     @RequestMapping("/delUser/{id}")  
  70.     public ModelAndView delUser(@PathVariable("id") 字符串 id,HttpServletRequest 请求){  
  71.         这个.userService.delUser(new User().setId(id));  
  72.         返回 userList(请求);  
  73.     }  
  74.       
  75.     @RequestMapping("/getUser/{id}")  
  76.     public ModelAndView getUser(@PathVariable("id") 字符串 id){  
  77.         用户 user = 这个.userService.getUserById(new User().setId(id));  
  78.         ModelAndView mv =  ModelAndView("updateUser");  
  79.         mv.addObject("用户",user);  
  80.         返回 mv;  
  81.     }     
  82.       
  83.     @RequestMapping("/updateUser")  
  84.     public ModelAndView editUser(User user,HttpServletRequest request){   
  85.         System.out.println("编辑: " user);  
  86.         这个.userService.editUser(user);  
  87.         返回 userList(请求);  
  88.     }         
  89.       
  90. }  

BaseController.java

Java 代码  

  1. 套餐 com.liuzd.sj.web;  
  2.   
  3. 导入 javax.servlet.http.HttpServletRequest;  
  4.   
  5. 导入 com.liuzd.page.Page;  
  6. 导入 com.liuzd.page.PageState;  
  7. 导入 com.liuzd.page.PageUtil;  
  8.   
  9. /**    
  10.  *标题:      
  11.  *描述:      
  12.  *版权: 版权所有 (c) 2011    
  13.  *公司:http://liuzidong.iteye.com/     
  14.  *制作日期:2011-5-23 下午03:31:03    
  15.  * @author liuzidong    
  16.  * @version 1.0    
  17.  * @since 1.0     
  18.  *    
  19.  */  
  20. 公共  BaseController {  
  21.       
  22.     /** 
  23.      * oracel的三层分页语句     
  24.      * 子类在展现数据前,进行分页计算! 
  25.      * @param querySql  查询的SQL语句,未进行分页 
  26.      * @param totalCount 根据查询SQL获取的总条数 
  27.      * @param columnNameDescOrAsc 列名 排序方式 : ID DESC or ASC 
  28.      */  
  29.     受保护 页面executePage(HttpServletRequest 请求,String querySql,Long totalCount,String columnNameDescOrAsc){  
  30.         String oracleSql = PageUtil.createQuerySql(querySql,columnNameDescOrAsc);  
  31.         if(null == totalCount){  
  32.             总计数 = 0L;  
  33.         }  
  34.         /**页面状态,这个状态是分页自带的,与业务无关*/  
  35.         String pageAction = request.getParameter("pageAction");  
  36.         字符串值 = request.getParameter("pageKey");  
  37.           
  38.         /**获取下标判断分页状态*/  
  39.         int index = PageState.getOrdinal(pageAction);                 
  40.           
  41.         页页 = null;         
  42.         /** 
  43.          * index < 1 只有二种状态 
  44.          * 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1 
  45.          * 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算 
  46.          * */  
  47.         页面 sessionPage = getPage(request);  
  48.           
  49.         if(索引1){             
  50.             page = PageUtil.inintPage(oracleSql,totalCount,index,value,sessionPage);  
  51.         }其他{                
  52.             page = PageUtil.execPage(index,value,sessionPage);  
  53.         }         
  54.         setSession(请求,页面);     
  55.         返回 页面;  
  56.     }     
  57.       
  58.     私有 页面 getPage(HttpServletRequest 请求) {  
  59.         Page page = (Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);  
  60.         if(页== null){  
  61.             页面=  页面();  
  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 {     
  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. ​​ com.liuzd.sj.dao.impl;  
  2.   
  3. 导入 java.sql.PreparedStatement;  
  4. 导入 java.sql.SQLException;  
  5. 导入 java.util.List;  
  6.   
  7. 导入 javax.annotation.Resource;  
  8.   
  9. 导入 org.springframework.jdbc.core.BeanPropertyRowMapper;  
  10. 导入 org.springframework.jdbc.core.PreparedStatementSetter;  
  11. 导入 org.springframework.stereotype.Repository;  
  12.   
  13. 导入 com.liuzd.sj.dao.UserDAO;  
  14. 导入 com.liuzd.sj.dao.UserRowMapper;  
  15. 导入 com.liuzd.sj.entity.User;  
  16.   
  17. @Repository("userDao")  
  18. 公共  UserDAOImpl 实现 UserDAO  
  19. {  
  20.       
  21.     私有 静态 最终 字符串 INSERT = “插入用户(ID、姓名、年龄、性别、地址、密码)VALUES(?,?,?,?,?,?)”;  
  22.     私人 静态 最终 字符串 UPDATE = “更新用户设置名称=?,年龄=?,性别=?,地址=?,密码=?其中id=?”;  
  23.     私有 静态 最终 String GET = “从 id=? 的用户中选择 *”;  
  24.     私有 静态 最终 String CHECK = “从名称=?且密码=?的用户中选择count(1)个”;  
  25.     私有 静态 最终 String SELECT = “从用户中选择*”;  
  26.     私有 静态 最终 String DEL = “删除 id= 的用户?”;  
  27.       
  28.     私有 org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;      
  29.   
  30.     public org.springframework.jdbc.core.JdbcTemplate getJdbcTemplate() {  
  31.         返回 jdbcTemplate;  
  32.     }  
  33.   
  34.     @Resource  
  35.     公共 void setJdbcTemplate(  
  36.             org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) {  
  37.         这个.jdbcTemplate = jdbcTemplate;  
  38.     }     
  39.       
  40.   
  41.     公共 void addUser(最终 用户 user) {  
  42.         getJdbcTemplate().update(INSERT,  PreparedStatementSetter(){  
  43.             public void setValues(PreparedStatement ps)  
  44.                     抛出 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.         返回 getJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());  
  60.     }  
  61.   
  62.     公共 void delUser(用户 用户) {  
  63.         getJdbcTemplate().update(DEL, user.getId());  
  64.     }  
  65.   
  66.     公开 void editUser(最终 用户 user) {       
  67.         getJdbcTemplate().update(UPDATE,  PreparedStatementSetter(){  
  68.             public void setValues(PreparedStatement ps)  
  69.                     抛出 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.     公开 列表 getAllUser() {        
  82.         返回 getJdbcTemplate().query(SELECT, new BeanPropertyRowMapper(User.));  
  83.     }  
  84.   
  85.     公共 用户 getUserById(User user) {          
  86.         返回 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 pageList(String querySql) {       
  94.         return getJdbcTemplate().query(querySql, new UserRowMapper());  
  95.     }  
  96.   
  97. }  

UserDAOImpl2.java

Java代码  

  1. ​​ com.liuzd.sj.dao.impl;  
  2.   
  3. 导入 java.util.List;  
  4. 导入 java.util.Map;  
  5.   
  6. 导入 javax.annotation.Resource;  
  7.   
  8. 导入 org.springframework.jdbc.core.BeanPropertyRowMapper;  
  9. 导入 org.springframework.stereotype.Repository;  
  10.   
  11. 导入 com.liuzd.sj.dao.UserDAO;  
  12. 导入 com.liuzd.sj.entity.User;  
  13. 导入 com.liuzd.util.BeanToMapUtil;  
  14.   
  15. @Repository("userDao2")  
  16. 公共  UserDAOImpl2 实现 UserDAO  
  17. {  
  18.       
  19.     私有 静态 最终 字符串 INSERT = “插入用户(id,姓名,年龄,性别,地址,密码)VALUES(:id,:姓名,:年龄,:性别,:地址,:密码)”;  
  20.     私人 静态 最终 字符串 UPDATE = “更新用户设置名称=:姓名,年龄=:年龄,性别=:性别,地址=:地址,密码=:密码,其中id=:id”;  
  21.     私有 静态 最终 String GET = “从 id=? 的用户中选择 *”;  
  22.     私有 静态 最终 String CHECK = “从名称=?且密码=?的用户中选择count(1)个”;  
  23.     私有 静态 最终 String SELECT = “从用户中选择*”;  
  24.     私有 静态 最终 String DEL = “删除 id= 的用户?”;  
  25.       
  26.     私有 org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate;  
  27.       
  28.     public org.springframework.jdbc.core.simple.SimpleJdbcTemplate getSimpleJdbcTemplate() {  
  29.         返回 simpleJdbcTemplate;  
  30.     }  
  31.   
  32.     @Resource  
  33.     公共 void setSimpleJdbcTemplate(  
  34.             org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate) {  
  35.         这个.simpleJdbcTemplate = simpleJdbcTemplate;  
  36.     }     
  37.       
  38.   
  39.     公共 void addUser(最终 用户 user) {  
  40.         地图 userMap = BeanToMapUtil.beanToMap(user);         
  41.         getSimpleJdbcTemplate().update(INSERT, userMap);          
  42.     }  
  43.   
  44.     public int checkUserExits(User user) {            
  45.         返回 getSimpleJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());  
  46.     }  
  47.   
  48.     公共 void delUser(用户 用户) {  
  49.         getSimpleJdbcTemplate().update(DEL, user.getId());  
  50.     }  
  51.   
  52.     公开 void editUser(最终 用户 user) {               
  53.         地图 userMap = BeanToMapUtil.beanToMap(user);         
  54.         getSimpleJdbcTemplate().update(UPDATE, userMap);  
  55.     }  
  56.   
  57.     公开 列表 getAllUser() {        
  58.         返回 getSimpleJdbcTemplate().query(SELECT, new BeanPropertyRowMapper(User.));  
  59.     }  
  60.   
  61.     公共 用户 getUserById(User user) {          
  62.         返回 getSimpleJdbcTemplate().queryForObject(GET, new BeanPropertyRowMapper(User.),user.getId());  
  63.     }  
  64.   
  65.     public int pageCounts(String querySql) {          
  66.         返回 getSimpleJdbcTemplate().queryForInt("select count(1) from(" querySql ")");  
  67.     }  
  68.   
  69.     公开 列表 pageList(String querySql) {       
  70.         返回 getSimpleJdbcTemplate().query(querySql, new BeanPropertyRowMapper(User.));  
  71.     }  
  72.   
  73. }  
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn