文章来源: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. Mygin上下文之sync.Pool复用

    sync.Pool 的作用 先看看官方文档怎样说的吧,我截取了官方文档的第一句. // A Pool is a set of temporary objects that may be individ ...

  2. 《ASP.NET Core 微服务实战》-- 读书笔记(第10章)

    第 10 章 应用和微服务安全 云应用意味着应用运行所在的基础设施无法掌控,因此安全不能再等到事后再考虑,也不能只是检查清单上毫无意义的复选框 由于安全与云原生应用密切相关,本章将讨论安全话题,并用示 ...

  3. JS Leetcode 208. 实现 Trie (前缀树) 题解分析,第一次了解前缀树(字典树)

    壹 ❀ 引 本题来自LeetCode 208. 实现 Trie (前缀树),难度中等,题目描述如下: Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地 ...

  4. NC16416 [NOIP2017]逛公园

    题目链接 题目 题目描述 策策同学特别喜欢逛公园. 公园可以看成一张 N 个点 M 条边构成的有向图,且没有自环和重边.其中 1 号点是公园的入口, N 号点是公园的出口,每条边有一个非负权值,代表策 ...

  5. NC24605 [USACO 2011 Ope S]Corn Maze

    题目链接 题目 题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just an ...

  6. 基于 junit5 实现 junitperf 源码分析

    前言 上一节介绍了基于 junit4 实现 junitperf,但是可以发现定义变量的方式依然不够优雅. 那可以让用户使用起来更加自然一些吗? 有的,junit5 为我们带来了更加强大的功能. 拓展阅 ...

  7. STM32的串口通信UART/TTL

    常用的串口pin STM32的串口是基础通信方式, 每个型号都带多组串口, 一般都使用默认的组, 可以参考芯片的datasheet, 去看pinout and pin definitions, stm ...

  8. Android 自动化测试项目

    1 前言 ​ 在 Android自动化测试框架uiautomator2详解 中,介绍了 uiautomator2 框架的环境配置.元素定位工具以及常用接口. ​ 本文对 uiautomator2 框架 ...

  9. python第二章pta习题总结

    chapter2 一.选择填空判断部分 1. C语言中,变量变的是内存空间中的值,不变的是地址: Python中,变量变的是地址,不变的是内存空间中的值. 2. 3.bool('False') 的返回 ...

  10. std::vector<std::string> 与 char** 的转换

    vecotr 容器中插入多条字符串,再将 vector 的地址转换为 char** 代码如下: #include <stdio.h> #include <string> #in ...