首页 数据库 mysql教程 SpringMVC JDBC:分页示例_MySQL

SpringMVC JDBC:分页示例_MySQL

May 31, 2016 am 08:46 AM

一 环境: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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

与MySQL中使用索引相比,全表扫描何时可以更快? 与MySQL中使用索引相比,全表扫描何时可以更快? Apr 09, 2025 am 12:05 AM

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

说明InnoDB全文搜索功能。 说明InnoDB全文搜索功能。 Apr 02, 2025 pm 06:09 PM

InnoDB的全文搜索功能非常强大,能够显着提高数据库查询效率和处理大量文本数据的能力。 1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。 2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。 3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

可以在 Windows 7 上安装 mysql 吗 可以在 Windows 7 上安装 mysql 吗 Apr 08, 2025 pm 03:21 PM

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

InnoDB中的聚类索引和非簇索引(次级索引)之间的差异。 InnoDB中的聚类索引和非簇索引(次级索引)之间的差异。 Apr 02, 2025 pm 06:25 PM

聚集索引和非聚集索引的区别在于:1.聚集索引将数据行存储在索引结构中,适合按主键查询和范围查询。2.非聚集索引存储索引键值和数据行的指针,适用于非主键列查询。

mysql:简单的概念,用于轻松学习 mysql:简单的概念,用于轻松学习 Apr 10, 2025 am 09:29 AM

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

说明不同类型的MySQL索引(B树,哈希,全文,空间)。 说明不同类型的MySQL索引(B树,哈希,全文,空间)。 Apr 02, 2025 pm 07:05 PM

MySQL支持四种索引类型:B-Tree、Hash、Full-text和Spatial。1.B-Tree索引适用于等值查找、范围查询和排序。2.Hash索引适用于等值查找,但不支持范围查询和排序。3.Full-text索引用于全文搜索,适合处理大量文本数据。4.Spatial索引用于地理空间数据查询,适用于GIS应用。

mysql用户和数据库的关系 mysql用户和数据库的关系 Apr 08, 2025 pm 07:15 PM

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。

mysql 和 mariadb 可以共存吗 mysql 和 mariadb 可以共存吗 Apr 08, 2025 pm 02:27 PM

MySQL 和 MariaDB 可以共存,但需要谨慎配置。关键在于为每个数据库分配不同的端口号和数据目录,并调整内存分配和缓存大小等参数。连接池、应用程序配置和版本差异也需要考虑,需要仔细测试和规划以避免陷阱。在资源有限的情况下,同时运行两个数据库可能会导致性能问题。

See all articles