`

springMVC+JDBC:分页示例

阅读更多


文章来源:http://liuzidong.iteye.com/blog/1067492
一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5
二 工程相关图片:


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

    package com.liuzd.sj.web;  
     
    import java.util.List;  
     
    import javax.annotation.Resource;  
    import javax.servlet.http.HttpServletRequest;  
     
    import org.springframework.stereotype.Controller;  
    import org.springframework.web.bind.annotation.PathVariable;  
    import org.springframework.web.bind.annotation.RequestMapping;  
    import org.springframework.web.bind.annotation.SessionAttributes;  
    import org.springframework.web.servlet.ModelAndView;  
     
    import com.liuzd.page.Page;  
    import com.liuzd.sj.entity.User;  
    import com.liuzd.sj.service.UserService;  
     
    @Controller 
    @RequestMapping("/user")  
    @SessionAttributes("userList")  
    public class UserController extends BaseController{  
          
        private UserService userService;  
          
     
        public UserService getUserService() {  
            return userService;  
        }  
          
        @Resource 
        public void setUserService(UserService userService) {  
            this.userService = userService;  
        }     
     
          
        @RequestMapping("/userList")  
        public ModelAndView userList(HttpServletRequest request){  
            StringBuilder querySql = new StringBuilder();  
            querySql.append("select * from users where 1=1 ");  
              
            String oracleQuerySql = querySql.toString();  
            //获取总条数  
            Long totalCount = new Long(this.getUserService().pageCounts(oracleQuerySql));  
            //设置分页对象  
            Page page = executePage(request,oracleQuerySql,totalCount," id desc ");       
              
            ModelAndView mv = new ModelAndView();         
            //查询集合        
            List<User> users = this.getUserService().pageList(page.getQuerySql());  
            mv.addObject("userList",users);               
            mv.setViewName("userList");           
            return mv;  
        }  
          
          
          
        @RequestMapping("/addUser")  
        public ModelAndView addUser(HttpServletRequest request,User user){  
            System.out.println("ADD USER: "+ user);   
            this.userService.addUser(user);       
            return userList(request);  
        }  
          
        @RequestMapping("/toAddUser")  
        public String toAddUser(){        
            return "addUser";  
        }  
          
        @RequestMapping("/delUser/{id}")  
        public ModelAndView delUser(@PathVariable("id") String id,HttpServletRequest request){  
            this.userService.delUser(new User().setId(id));  
            return userList(request);  
        }  
          
        @RequestMapping("/getUser/{id}")  
        public ModelAndView getUser(@PathVariable("id") String id){  
            User user = this.userService.getUserById(new User().setId(id));  
            ModelAndView mv = new ModelAndView("updateUser");  
            mv.addObject("user",user);  
            return mv;  
        }     
          
        @RequestMapping("/updateUser")  
        public ModelAndView editUser(User user,HttpServletRequest request){   
            System.out.println("编辑: "+user);  
            this.userService.editUser(user);  
            return userList(request);  
        }         
          
    } 

BaseController.java
Java代码

    package com.liuzd.sj.web;  
     
    import javax.servlet.http.HttpServletRequest;  
     
    import com.liuzd.page.Page;  
    import com.liuzd.page.PageState;  
    import com.liuzd.page.PageUtil;  
     
    /**    
     *Title:      
     *Description:      
     *Copyright: Copyright (c) 2011    
     *Company:http://liuzidong.iteye.com/     
     *Makedate:2011-5-23 下午03:31:03    
     * @author liuzidong    
     * @version 1.0    
     * @since 1.0     
     *    
     */ 
    public class BaseController {  
          
        /** 
         * oracel的三层分页语句     
         * 子类在展现数据前,进行分页计算! 
         * @param querySql  查询的SQL语句,未进行分页 
         * @param totalCount 根据查询SQL获取的总条数 
         * @param columnNameDescOrAsc 列名+排序方式 : ID DESC or ASC 
         */ 
        protected Page executePage(HttpServletRequest request,String querySql,Long totalCount,String columnNameDescOrAsc){  
            String oracleSql = PageUtil.createQuerySql(querySql,columnNameDescOrAsc);  
            if(null == totalCount){  
                totalCount = 0L;  
            }  
            /**页面状态,这个状态是分页自带的,与业务无关*/ 
            String pageAction = request.getParameter("pageAction");  
            String value = request.getParameter("pageKey");  
              
            /**获取下标判断分页状态*/ 
            int index = PageState.getOrdinal(pageAction);                 
              
            Page page = null;         
            /** 
             * index < 1 只有二种状态 
             * 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1 
             * 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算 
             * */ 
            Page sessionPage = getPage(request);  
              
            if(index < 1){             
                page = PageUtil.inintPage(oracleSql,totalCount,index,value,sessionPage);  
            }else{                
                page = PageUtil.execPage(index,value,sessionPage);  
            }         
            setSession(request,page);     
            return page;  
        }     
          
        private Page getPage(HttpServletRequest request) {  
            Page page = (Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);  
            if(page == null){  
                page = new Page();  
            }  
            return page;          
        }     
          
        private void setSession(HttpServletRequest request,Page page) {  
            request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY,page);        
        }     
     
    } 

UserRowMapper.java
Java代码

    package com.liuzd.sj.dao;  
     
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
     
    import org.springframework.jdbc.core.RowMapper;  
     
    import com.liuzd.sj.entity.User;  
     
    public class UserRowMapper implements RowMapper<User> {     
          
          
        public UserRowMapper(){}      
          
        public User mapRow(ResultSet rs, int index) throws SQLException {                 
            User user = new User(  
                    rs.getString("id"),  
                    rs.getString("name"),  
                    rs.getString("password"),  
                    rs.getString("address"),  
                    rs.getString("sex"),  
                    rs.getInt("age")  
            );        
            return user;  
        }  
    } 

UserDAOImpl.java
Java代码

    package com.liuzd.sj.dao.impl;  
     
    import java.sql.PreparedStatement;  
    import java.sql.SQLException;  
    import java.util.List;  
     
    import javax.annotation.Resource;  
     
    import org.springframework.jdbc.core.BeanPropertyRowMapper;  
    import org.springframework.jdbc.core.PreparedStatementSetter;  
    import org.springframework.stereotype.Repository;  
     
    import com.liuzd.sj.dao.UserDAO;  
    import com.liuzd.sj.dao.UserRowMapper;  
    import com.liuzd.sj.entity.User;  
     
    @Repository("userDao")  
    public class UserDAOImpl implements UserDAO  
    {  
          
        private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(?,?,?,?,?,?)";  
        private static final String UPDATE = "update users set name=?,age=?,sex=?,address=?,password=? where id=?";  
        private static final String GET = "select * from users where id=?";  
        private static final String CHECK = "select count(1) from users where name=? and password=?";  
        private static final String SELECT = "select * from users";  
        private static final String DEL = "delete users where id=?";  
          
        private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;      
     
        public org.springframework.jdbc.core.JdbcTemplate getJdbcTemplate() {  
            return jdbcTemplate;  
        }  
     
        @Resource 
        public void setJdbcTemplate(  
                org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) {  
            this.jdbcTemplate = jdbcTemplate;  
        }     
          
     
        public void addUser(final User user) {  
            getJdbcTemplate().update(INSERT, new PreparedStatementSetter(){  
                public void setValues(PreparedStatement ps)  
                        throws SQLException {  
                    int i = 0;        
                    ps.setString(++i, user.getId());  
                    ps.setString(++i, user.getName());  
                    ps.setInt(++i, user.getAge());  
                    ps.setString(++i,user.getSex());  
                    ps.setString(++i,user.getAddress());  
                    ps.setString(++i,user.getPassword());             
                }             
            });  
              
              
        }  
     
        public int checkUserExits(User user) {                
            return getJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());  
        }  
     
        public void delUser(User user) {  
            getJdbcTemplate().update(DEL, user.getId());  
        }  
     
        public void editUser(final User user) {       
            getJdbcTemplate().update(UPDATE, new PreparedStatementSetter(){  
                public void setValues(PreparedStatement ps)  
                        throws SQLException {  
                    int i = 0;                        
                    ps.setString(++i, user.getName());  
                    ps.setInt(++i, user.getAge());  
                    ps.setString(++i,user.getSex());  
                    ps.setString(++i,user.getAddress());  
                    ps.setString(++i,user.getPassword());     
                    ps.setString(++i, user.getId());  
                }             
            });  
        }  
     
        public List<User> getAllUser() {        
            return getJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));  
        }  
     
        public User getUserById(User user) {          
            return getJdbcTemplate().queryForObject(GET, new UserRowMapper(),user.getId());  
        }  
     
        public int pageCounts(String querySql) {          
            return getJdbcTemplate().queryForInt("select count(1) from("+querySql+")");  
        }  
     
        public List<User> pageList(String querySql) {       
            return getJdbcTemplate().query(querySql, new UserRowMapper());  
        }  
     
    } 

UserDAOImpl2.java
Java代码

    package com.liuzd.sj.dao.impl;  
     
    import java.util.List;  
    import java.util.Map;  
     
    import javax.annotation.Resource;  
     
    import org.springframework.jdbc.core.BeanPropertyRowMapper;  
    import org.springframework.stereotype.Repository;  
     
    import com.liuzd.sj.dao.UserDAO;  
    import com.liuzd.sj.entity.User;  
    import com.liuzd.util.BeanToMapUtil;  
     
    @Repository("userDao2")  
    public class UserDAOImpl2 implements UserDAO  
    {  
          
        private static final String INSERT = "insert into users(id,name,age,sex,address,password)VALUES(:id,:name,:age,:sex,:address,:password)";  
        private static final String UPDATE = "update users set name=:name,age=:age,sex=:sex,address=:address,password=:password where id=:id";  
        private static final String GET = "select * from users where id=?";  
        private static final String CHECK = "select count(1) from users where name=? and password=?";  
        private static final String SELECT = "select * from users";  
        private static final String DEL = "delete users where id=?";  
          
        private org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate;  
          
        public org.springframework.jdbc.core.simple.SimpleJdbcTemplate getSimpleJdbcTemplate() {  
            return simpleJdbcTemplate;  
        }  
     
        @Resource 
        public void setSimpleJdbcTemplate(  
                org.springframework.jdbc.core.simple.SimpleJdbcTemplate simpleJdbcTemplate) {  
            this.simpleJdbcTemplate = simpleJdbcTemplate;  
        }     
          
     
        public void addUser(final User user) {  
            Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);         
            getSimpleJdbcTemplate().update(INSERT, userMap);          
        }  
     
        public int checkUserExits(User user) {            
            return getSimpleJdbcTemplate().queryForInt(CHECK, user.getName(),user.getPassword());  
        }  
     
        public void delUser(User user) {  
            getSimpleJdbcTemplate().update(DEL, user.getId());  
        }  
     
        public void editUser(final User user) {               
            Map<String,Object> userMap = BeanToMapUtil.beanToMap(user);         
            getSimpleJdbcTemplate().update(UPDATE, userMap);  
        }  
     
        public List<User> getAllUser() {        
            return getSimpleJdbcTemplate().query(SELECT, new BeanPropertyRowMapper<User>(User.class));  
        }  
     
        public User getUserById(User user) {          
            return getSimpleJdbcTemplate().queryForObject(GET, new BeanPropertyRowMapper<User>(User.class),user.getId());  
        }  
     
        public int pageCounts(String querySql) {          
            return getSimpleJdbcTemplate().queryForInt("select count(1) from("+querySql+")");  
        }  
     
        public List<User> pageList(String querySql) {       
            return getSimpleJdbcTemplate().query(querySql, new BeanPropertyRowMapper<User>(User.class));  
        }  
     
    } 

springmvc.xml
Java代码

    <?xml version="1.0" encoding="UTF-8" ?>  
    <beans xmlns="http://www.springframework.org/schema/beans"   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:p="http://www.springframework.org/schema/p"   
        xmlns:context="http://www.springframework.org/schema/context" 
        xmlns:mvc="http://www.springframework.org/schema/mvc"     
        xsi:schemaLocation="  
            http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc      
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
        <!--   
             自动搜索@Controller标注的类  
             用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。  
         -->  
        <context:component-scan base-package="com.liuzd.sj.web" />      
          
         <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>  
          
     </beans> 

userList.jsp
Java代码

    <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>  
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <%@ include file="/common/meta.jsp"%>  
      </head>    
      <body>  
          <table width="60%" border="1" cellpadding="0" align="center">  
                <thead>  
                    <tr>  
                        <th style="cursor: hand;" title="按姓名进行排序" onclick="sortPage('name')" valign="top">  
                            姓名<font color='red'>${page.sortName eq "name" ? page.sortInfo : page.defaultInfo}</font>  
                        </th>  
                        <th style="cursor: hand;" title="按年龄进行排序" onclick="sortPage('age')" valign="top">  
                            年龄<font color='red'>${page.sortName eq "age" ? page.sortInfo : page.defaultInfo}</font>  
                        </th>  
                        <th style="cursor: hand;" title="按性别进行排序" onclick="sortPage('sex')" valign="top">  
                            性别<font color='red'>${page.sortName eq "sex" ? page.sortInfo : page.defaultInfo}</font>  
                        </th>  
                        <th style="cursor: hand;" title="按地址进行排序" onclick="sortPage('address')" valign="top">  
                            地址<font color='red'>${page.sortName eq "address" ? page.sortInfo : page.defaultInfo}</font>  
                        </th>  
                        <th style="cursor: hand;" >  
                            操作  
                        </th>  
                    </tr>  
                </thead>  
                <tbody>             
     
                    <c:forEach items="${userList}" var="user">  
                        <tr align="center">  
                            <td>  
                                ${user.name}  
                            </td>  
                            <td>  
                                ${user.age}  
                            </td>  
                            <td>  
                                ${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}  
                            </td>  
                            <td>  
                                ${user.address}  
                            </td>  
                            <td>  
                                <a  
                                    href="${pageContext.request.contextPath}/user/toAddUser.do">添加</a>  
                                |  
                                <a  
                                    href="${pageContext.request.contextPath}/user/getUser/${user.id}.do">编辑</a>  
                                |  
                                <a  
                                    href="${pageContext.request.contextPath}/user/delUser/${user.id}.do">删除</a>  
                            </td>  
                        </tr>  
                    </c:forEach>  
                    <jsp:include page="/page/page.jsp">  
                        <jsp:param name="url" value="user/userList.do" />                   
                    </jsp:include>  
                      
                </tbody>  
            </table>  
            <br>  
            <a href="${pageContext.request.contextPath}/index.jsp">返回</a><br>       
      </body>  
    </html> 
分享到:
评论

相关推荐

    SpringMVC+JDBC:分页示例

    在这里,我们将深入探讨如何结合SpringMVC和JDBC实现一个分页示例。 首先,让我们了解SpringMVC中的核心概念。SpringMVC通过DispatcherServlet接收HTTP请求,然后根据配置的映射规则转发到相应的控制器(Controller...

    spring+springmvc+mybatis+jsp分页插件

    本项目"spring+springmvc+mybatis+jsp分页插件"正是为了解决这个问题而设计的。下面我们将详细探讨这个项目的各个组成部分及其工作原理。 首先,Spring是一个开源的Java框架,它提供了全面的编程和配置模型,简化了...

    SpringMVC3.0+MyIbatis3.0(分页示例)

    标题 "SpringMVC3.0+MyIbatis3.0(分页示例)" 提到的是一个集成SpringMVC和MyBatis的项目,并且包含了分页功能的实现。这通常意味着我们要探讨的是如何在Java Web开发环境中整合这两个流行的框架,并实现数据的分页...

    SpringMVC3 + SpringJDBC整合 源码。

    总的来说,这个SpringMVC3 + SpringJDBC的案例项目提供了一个全面的实战示例,涵盖了Web开发中的关键部分。通过学习和实践这个案例,开发者可以深入理解SpringMVC和SpringJDBC的整合应用,以及如何在实际项目中实现...

    2017最新SpringMVC+Spring+Mybatis

    分页插件PageHelper则是Mybatis的扩展,它提供了强大的分页功能,只需简单配置,即可实现物理分页或逻辑分页。PageHelper的使用使得在查询大量数据时,既能满足用户体验,又避免了一次性加载大量数据对服务器造成...

    springmvc+mybatis+maven登陆、增删改查、分页实例-初学者必选(含数据库) zip文件

    这是一个基于SpringMVC、MyBatis和Maven的Web应用程序示例,专为初学者设计,旨在帮助他们理解和掌握这三大框架的集成与应用。这个项目涵盖了登录功能、基本的CRUD操作(创建、读取、更新、删除)以及分页处理。下面...

    SpringBoot+springMvc +mybatis+shiro安全架构的二手车项目代码,外加分页CSS+html+js

    这是一套完整的后端与前端结合的项目,旨在提供一个安全、高效的二手车交易平台开发示例。 首先,SpringBoot是Spring框架的一种轻量级实现,它简化了Spring应用程序的初始搭建以及开发过程。SpringBoot的特点在于...

    javaee-SpringMVC-Mybatis 分页插件

    本项目“javaee-SpringMVC-Mybatis 分页插件”显然是一个结合了这三个框架实现的分页功能示例。下面我们将深入探讨这些技术及其分页插件的应用。 1. **JavaEE**:JavaEE(Java Platform, Enterprise Edition)是...

    springMvc+mybatis(查询用户信息)Demo5

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 三、...

    传智播客_Springmvc+Mybatis由浅入深配套代码

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程,可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。...

    Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

    本文的知识点涵盖了如何使用Spring Data JPA、SpringMVC和Jquery.pagination.js这三个技术栈组合实现数据的分页功能。接下来,将详细介绍这些技术的使用方法和优势,并结合示例代码来具体说明如何将这些技术集成在...

    springMVC(4.0)+MyBatis

    在SpringMVC中,控制器接收分页参数,如当前页和每页记录数,然后传递给服务层,最后由MyBatis执行相应的分页SQL并返回结果。 **事务管理** 事务管理是企业级应用中的重要组成部分,确保数据的一致性和完整性。...

    ssm框架-mysql的简单分页

    最后,`sql.rar`可能包含了创建表和插入示例数据的SQL脚本,而`mytest6`可能是项目中的一个测试类或者模块,用于验证分页功能的正确性。 总结起来,本项目是一个基本的SSM框架实践,通过结合Spring、SpringMVC和...

    ssm分页增删改查

    这个"ssm分页增删改查"的项目,旨在为新手和初学者提供一个基础的示例,帮助他们理解和掌握在实际应用中如何实现数据的分页查询、增加、删除和修改操作。 1. **Spring框架**:Spring作为核心容器,管理着应用中的...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    ssm+easyUI整合案列

    3. **MyBatis**:MyBatis是一个持久层框架,它允许开发者编写SQL语句并将其映射到Java接口上,消除了几乎所有的JDBC代码和手动设置参数。在SSM中,MyBatis作为数据访问层,负责与数据库交互。 4. **EasyUI**:...

    013-MyBatis分页插件-PageHelper1

    **引入依赖**:确保引入了MyBatis、SpringMVC、MyBatis-Spring、BoneCP连接池、MySQL驱动以及Spring JDBC的依赖。 B. **编写DAO层**:创建一个用于查询学生的Mapper接口,例如`StudentMapper`,并定义对应的XML...

    ssm增删改查代码

    这个项目的代码示例可以帮助初学者理解SSM框架的实际应用,特别是如何结合PageHelper实现分页查询,以及如何使用Ajax进行前后端交互。通过学习和实践这个项目,开发者可以进一步提升在Java web开发中的技能。

Global site tag (gtag.js) - Google Analytics