文章来源: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:分页示例的更多相关文章

  1. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  2. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  3. jdbc分页

    分页是一个被讲到烂掉的话题,今天我再拾起来踹几脚吧 (Hibernate的分页做得很好很强大,用的人都知道 ,这个就不用再说了) 1.为什么要分页?    首先是数据量太大会影响查询和传输的性能,关键 ...

  4. JDBC + MySQL 示例

    jdbc mysql connection 教程 翻译自:JDBC MySQL Connection Tutorial Java Database Connectivity (JDBC) 是一个基于J ...

  5. SQL Server 2012 OFFSET/FETCH NEXT分页示例(转载)

    原文:http://beyondrelational.com/modules/29/presentations/483/scripts/12983/sql-server-2012-server-sid ...

  6. Mybatis+SpringMVC实现分页查询(附源码)

    Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...

  7. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  8. springmvc 项目完整示例03 小结

    利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...

  9. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  10. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

随机推荐

  1. 基于SLAM的规划算法仿真复现|SLAM|智能规划

    图片来自百度百科 前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https: ...

  2. 21.1 TLS简述--《Windows核心编程》

    一.TLS简述 我们知道在一个进程中,所有线程是共享同一个地址空间的.所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程.不过 ...

  3. Hive-服务启动和停止命令

    1.启动命令 #!/bin/bash nohup hive --service metastore >> $HIVE_HOME/logs/metasotre.log 2>&1 ...

  4. NC17877 整数序列

    题目链接 题目 题目描述 给出一个长度为n的整数序列 \(a_1,a_2,...,a_n\) ,进行 \(m\) 次操作,操作分为两类. 操作1:给出 \(l,r,v\) ,将 \(a_l,a_{l+ ...

  5. APB_AHB_AXI协议的简单介绍

    一.AMBA概述 今天要介绍的三种嵌入式总线技术:APB.AHB.AXI,它们都属于AMBA 片上总线协议.所以,在介绍这几种总线技术之前,有必要先了解一下AMBA 片上总线协议是什么. AMBA ( ...

  6. SSD 接口简介——SATA/SAS

    SSD盘和主机端通过各种各样的接口互联,这里种类比较多,而且有些既是接口又是协议,有些既是接口又是规范,所以很容易一头雾水,于是这篇文章主要目的是梳理好这些不同的概念,只是梳理并不做深入讲解. 一. ...

  7. MySQL 幻象行

    当同一个查询在不同的时间产生不同的行集时,就会出现所谓的幻像问题.例如,如果执行了两次SELECT,但是第二次返回了第一次没有返回的行,那么该行就是一个"幻象"行. 假设在表chi ...

  8. v-html可能导致的问题

    v-html可能导致的问题 Vue中的v-html指令用以更新元素的innerHTML,其内容按普通HTML插入,不会作为Vue模板进行编译,如果试图使用v-html组合模板,可以重新考虑是否通过使用 ...

  9. Java中的Try with Resources语句介绍

    1.介绍 从Java7诞生了try-with-resources,这家伙可以在资源使用完后实现自动关闭回收.想想我们之前打开一个文件或流对象用完咋整的,是不是finally语句块中手动close的. ...

  10. 《系列二》-- 2、bean 的作用域: Scope 有哪些

    目录 作用域 Scope 特性概述 常规作用域 web 场景作用域 经典问题 模拟场景 解决办法 方法一 方法二 实现接口 BeanFactoryAware 阅读之前要注意的东西:本文就是主打流水账式 ...