免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2267 | 回复: 0
打印 上一主题 下一主题

JdbcTemplate-例子(good) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-06 13:02 |只看该作者 |倒序浏览

               
               
                               
                                                key words:Spring,jdbcTemplate
                               

               
               
                               
                                                注:因为Spring是以后的一个趋势,Hibernate的集成已经很好了,对于单独的jdbc的操作用DBUtils感觉已经没有什么必要,不如全部转到Spring的jdbc支持,从成本来考虑似乎更合适。
                               

               
               
                               
                                                本文转自
这里
                               

               
               
                               
                                               
                                                               
                                               
                               

               
               
                               
                                                前言:
                               

                               
                                               
                                                               
                                                               
                                               
                               

               
               
                                本文指在介绍
                                Spring
                                框架中的
                                JdbcTemplate
                                类的使用方法,涉及基本的
                                Spring
                                反转控制的使用方法和
                                JDBC
                                的基本概念。目标是使读者能够对
                                JdbcTemplate
                                快速地掌握和使用。
                               
                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                       
                               
                               
                                                准备:
                               

                               
                                               
                                                               
                                                               
                                               
                               

               
               
                                1. Spring
                                的基本概念
                               
                                               
                                               
                               
               
               
                               
                                                       Spring
                                框架核心的思想就是建立一个
                                Java
                                对象的大工厂,用户只要给工厂一个指令,工厂就能将用户需要的对象根据配置文件组装好返还给用户。用户需要做的许多工作则可以写成简单的配置文件。
                               
                                               
                                               
                               
               
               
                               
                                                       2.
                                丑陋的
                                JDBC
                                代码
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                Connection con= null;
                                                                               
                                                                               
                                                                                                PreparedStatement pStmt=null;
                                                                               
                                                                               
                                                                                                ResultSet rs = null;
                                                                               
                                                                               
                                                                                                try{           
                                                                               
                                                                               
                                                                                               
                                                                                                                            con = ods.getConnection();
                                                                               
                                                                               
                                                                                               
                                                                                                                            String sql = "select * from admin";
                                                                               
                                                                               
                                                                                               
                                                                                                                            pStmt=con.prepareStatement(sql);            
                                                                               
                                                                               
                                                                                               
                                                                                                                            rs=pStmt.executeQuery();
                                                                               
                                                                               
                                                                                               
                                                                                                                            while(rs.next())
                                                                               
                                                                               
                                                                                               
                                                                                                                            {            }
                                                                               
                                                                               
                                                                                                }
                                                                               
                                                                               
                                                                                                catch(Exception ex) {
                                                                               
                                                                               
                                                                                                try{
                                                                               
                                                                               
                                                                                               
                                                                                                                         con.rollback();
                                                                               
                                                                               
                                                                                               
                                                                                                                    }catch(SQLException sqlex){
                                                                               
                                                                               
                                                                                               
                                                                                                                          sqlex.printStackTrace(System.out);
                                                                               
                                                                               
                                                                                               
                                                                                                                     }
                                                                               
                                                                               
                                                                                               
                                                                                                                     ex.printStackTrace();
                                                                               
                                                                               
                                                                                                }finally{
                                                                               
                                                                               
                                                                                               
                                                                                                                   try{
                                                                               
                                                                               
                                                                                               
                                                                                                                            rs.close();
                                                                               
                                                                               
                                                                                               
                                                                                                                            pStmt.close();
                                                                               
                                                                               
                                                                                               
                                                                                                                            con.close();
                                                                               
                                                                               
                                                                                               
                                                                                                                   }catch(Exception e){e.printStackTrace();}
                                                                               
                                                                               
                                                                                                }
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                               
                                                                 
                                               
                               

               
               
                               
                                               
                                                                       
                                               
                               

                                以上是常见的
                                JDBC
                                代码,简单的
                                select
                                语句也需要冗长的出错处理,并且每个函数都不断地重复同样的代码。
                               
                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                       3. JdbcTemplate
                                的作用
                               
                                               
                                               
                               
               
               
                               
                                                       JdbcTemplate
                                正是为了减少上述繁琐的代码而设计出来的。它是对
                                JDBC
                                的一种封装,抽象我们常用的一些方法。
                                Simple and Stupid
                                就是它的目标。下面是完成了刚才
                                JDBC
                                代码同样功能的
                                JdbcTemplate
                                的代码:
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                String sql = "select * from admin";
                                                                               
                                                                               
                                                                                                jdbcTemplate.query(sql,new RowCallbackHandler() {
                                                                               
                                                                               
                                                                                               
                                                                                                                         public void processRow(ResultSet rs) throws SQLException {   
                                                                               
                                                                               
                                                                                               
                                                                                                                                }
                                                                               
                                                                               
                                                                                               
                                                                                                                            } );
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                               
                                                       
                               
                               
                                                环境搭建:
                               

                               
                                               
                                                               
                                                               
                                               
                               

               
               
                                1.
                                数据库的配置
                               
                                               
                                               
                               
               
               
                               
                                                       
                               
                                本文使用
                                Oracle
                                数据库,新建表
                                admin
                                :
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                               
                                                                                                                create
                                                                                               

                                                                                               
                                                                                                                table admin (
       IDnumber(
                                                                                                10
                                                                                                ) primarykey,
       NAMEvarchar2(
                                                                                                64
                                                                                                ),
       PASSWORDvarchar2(
                                                                                                64
                                                                                                )
)
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                               
                                                       2. Spring
                                配置
                               
                                               
                                               
                               
               
               
                               
                                                       JdbcTemplate
                                的使用需要有
                                DataSource
                                的支持,所以在配置文件中,我们首先要配置一个
                                OracleDataSource
                                ,然后在将这个
                                DataSource
                                配置到
                                JdbcTemplate
                                里。接着将
                                JdbcTemplate
                                配置进
                                DAO
                                层,最后将
                                DAO
                                配置进
                                Model
                                层。简要的关系如下:
                               
                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                     

                               
                                 SHAPE  \* MERGEFORMAT
                               
                                                                            模型层 : User
                                                数据访问层:UserDAO
                                                JdbcTemplate
                                                OracleDataSource
                    
                                               
                                               
                               
                               
                               
                                               
                                               
                               
               
               
                               
                                               
                                               
                               
               
               
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    "http://www.springframework.org/dtd/spring-beans.dtd">
                                                                               
                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                               
                                                                               
                                                                                               
                                                                                                                            jdbc:oracle:thin:root/123@localhost:1521/XE
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                                class="org.springframework.jdbc.core.JdbcTemplate">
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                               
                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                               
                                                                               
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                       3.
                                环境配置,
                               
                               
                                如图:
                               
                                               
                                               
                               
               
               
                               
                                               
                                                                     

                                                               
                                                               
                                                               
                                               
                               

                               
                                               
                                               
                               
               
               
                               
                                               
                                                                 
                                               
                               

               
               
                               
                                                使用方法:
                               

                               
                                               
                                                               
                                                               
                                               
                               

               
               
                               
                               
                                                1.      
                               
                               
                                查找
                               
                                               
                                               
                               
               
               
                                多行查询:
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                class UserRowMapper implements RowMapper
                                                                                                 {
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                                                                public Object mapRow(ResultSet rs,int index) throws SQLException
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                        {
                                                                               
                                                                               
                                                                                               
                                                                                                                            User u = new User();
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setId(rs.getString("ID"));
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setName(rs.getString("Name"));
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setPassword(rs.getString("Password"));
                                                                               
                                                                               
                                                                                               
                                                                                                                            return u;
                                                                               
                                                                               
                                                                                               
                                                                                                                        }
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                                public List select(String where)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        List list;        
                                                                               
                                                                               
                                                                                               
                                                                                                                        String sql = "select * from admin "+where;        
                                                                               
                                                                               
                                                                                               
                                                                                                                        list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));
                                                                               
                                                                               
                                                                                               
                                                                                                                        return list;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                                List
                                最终返回的是满足条件的
                                User
                                队列。
                               
                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                                单行查询:
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                public User selectById(String id){
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                                String sql = "select * from admin where id=?";
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                                final User u = new User();
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                                final Object[] params = new Object[] {id};
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                                                jdbcTemplate.query(sql, params, new RowCallbackHandler(){
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                    public void processRow(ResultSet rs) throws SQLException {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                             u.setId(rs.getString("ID"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                             u.setName(rs.getString("NAME"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                             u.setPassword(rs.getString("PASSWORD"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                    }                     
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                                });         
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                                return u;
                                                                               
                                                                               
                                                                                                }
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                               
                               
                                                2.      
                               
                               
                                插入
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                public void insert(User u)
                                                                               
                                                                               
                                                                                                {
                                                                               
                                                                               
                                                                                               
                                                                                                                     String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";
                                                                               
                                                                               
                                                                                               
                                                                                                                     Object[] params = new Object[] {
                                                                               
                                                                               
                                                                                               
                                                                                                                                            
                                                                                                                        
                                                                                                                            u.getName(),
                                                                               
                                                                               
                                                                                               
                                                                                                                                            
                                                                                                                        
                                                                                                                            u.getPassword() };
                                                                               
                                                                               
                                                                                               
                                                                                                                     jdbcTemplate.update(sql,params);
                                                                               
                                                                               
                                                                                               
                                                                                                                 }
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                                admin_id_seq.nextval
                                为
                                Oracle
                                设置好的序列,问号“
                                ?
                                ”被
                                params
                                里的数据依次替代,最终执行
                                sql
                                。
                               
                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                               
                                                3.      
                               
                               
                                修改
                               
                                               
                                               
                               
               
               
                                非常简单:
                               
                                               
                                               
                               
               
               
                               
                                               
                                                               
                                                                               
                                                                                                public void update(String how)
                                                                               
                                                                               
                                                                                                {
                                                                               
                                                                               
                                                                                               
                                                                                                                        jdbcTemplate.update(how);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
                               
                                               
                                                               
                                                                               
                                                               
                                               
                               

               
               
                               
                                               
                                                                  
                                               
                               

               
               
                               
                                                源代码:
                               

                               
                                               
                                                               
                                                               
                                               
                               

               
               
                                User.class:
               
               
                               
                                               
                                                               
                                                                               
                                                                                                package Model;
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                import java.util.List;
                                                                               
                                                                               
                                                                                                import DAO.UserDAO;
                                                                               
                                                                               
                                                                                                /**
                                                                               
                                                                               
                                                                                               
                                                                                                                 *  Model
                                                                                                层
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                 *
                                                                               
                                                                               
                                                                                               
                                                                                                                 *
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @author
                                                                                                李嘉陵
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @since 2006-4-30 12:10:30
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @version 0.10a
                                                                               
                                                                               
                                                                                               
                                                                                                                 **/
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                public class User {
                                                                               
                                                                               
                                                                                               
                                                                                                                    private String name;
                                                                               
                                                                               
                                                                                               
                                                                                                                    private String id;
                                                                               
                                                                               
                                                                                               
                                                                                                                    private String password;
                                                                               
                                                                               
                                                                                               
                                                                                                                    private UserDAO dao;
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public User()
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                  
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public User(String name, String password)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   this.name = name;
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   this.password = password;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void setDao(UserDAO dao)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.dao = dao;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    public String getId() {
                                                                               
                                                                               
                                                                                               
                                                                                                                        return id;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void setId(String id) {
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.id = id;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public String getName() {
                                                                               
                                                                               
                                                                                               
                                                                                                                        return name;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void setName(String name) {
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.name = name;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public String getPassword() {
                                                                               
                                                                               
                                                                                               
                                                                                                                        return password;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void setPassword(String password) {
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.password = password;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void getInfo(String id)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        List list = dao.select("where id="+id);
                                                                               
                                                                               
                                                                                               
                                                                                                                        User u = (User) list.get(0);
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.id=id;
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.name = u.getName();
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.password = u.getPassword();
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void insert()
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        dao.insert(this);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void update(String how)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        dao.update(how);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void update()
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        dao.update("update admin set name='"+name+"', password='"+password+"' where id="+id);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public List selectWithTemp(String where)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        return dao.select(where);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void selectWithTemp()
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        dao.selectWithTemp();
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public User selectById(String id)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   return dao.selectById(id);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                  
                                                                                                                  
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void insertUsers(List users)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   dao.insertUsers(users);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                                }
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                                UserDAO.class :
               
               
                               
                                               
                                                               
                                                                               
                                                                                               
                                                                                                                package DAO;
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 
                                                                                                               
                                                                                               
                                                                                               
                                                                                                                import java.util.List;
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 
                                                                                                               
                                                                                               
                                                                                               
                                                                                                                import Model.User;
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 
                                                                                                               
                                                                                               
                                                                                               
                                                                                                                /**
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 * DAO
                                                                                                                层接口
                                                                                                               
                                                                                                                               
                                                                                                                               
                                                                                                               
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 *
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 *
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 * @author
                                                                                                                李嘉陵
                                                                                                               
                                                                                                                               
                                                                                                                               
                                                                                                               
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 * @since 2006-4-30 8:40:56
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 * @version 0.10a
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 **/
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                 
                                                                                                               
                                                                                               
                                                                                               
                                                                                                                public interface UserDAO {
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public void select();
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public void test();
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public void selectWithTemp();
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public List select(String where);
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public void update(String how);
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public void insert(User u);
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public User selectById(String id);
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    public int[] insertUsers(final List users);
                                                                                               
                                                                                               
                                                                                                               
                                                                                                                                    
                                                                                                                               
                                                                                                                               
                                                                                                               
                                                                                               
                                                                                               
                                                                                                                }
                                                                                                               
                                                                                                                               
                                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                                UserDAOImp.class:
               
               
                               
                                               
                                                               
                                                                               
                                                                                                package DAO.Imp;
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                import java.sql.PreparedStatement;
                                                                               
                                                                               
                                                                                                import java.sql.ResultSet;
                                                                               
                                                                               
                                                                                                import java.sql.SQLException;
                                                                               
                                                                               
                                                                                                import java.util.List;
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                import org.springframework.jdbc.core.BatchPreparedStatementSetter;
                                                                               
                                                                               
                                                                                                import org.springframework.jdbc.core.JdbcTemplate;
                                                                               
                                                                               
                                                                                                import org.springframework.jdbc.core.RowCallbackHandler;
                                                                               
                                                                               
                                                                                                import org.springframework.jdbc.core.RowMapper;
                                                                               
                                                                               
                                                                                                import org.springframework.jdbc.core.RowMapperResultReader;
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                import DAO.UserDAO;
                                                                               
                                                                               
                                                                                                import Model.User;
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                /**
                                                                               
                                                                               
                                                                                               
                                                                                                                 *  DAO
                                                                                                层的实现
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                 *
                                                                               
                                                                               
                                                                                               
                                                                                                                 *
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @author
                                                                                                李嘉陵
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @since 2006-4-30 8:41:26
                                                                               
                                                                               
                                                                                               
                                                                                                                 * @version 0.10a
                                                                               
                                                                               
                                                                                               
                                                                                                                 **/
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                                public class UserDAOImp implements UserDAO{
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    private JdbcTemplate jdbcTemplate;
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        this.jdbcTemplate = jdbcTemplate;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    class UserRowMapper implements RowMapper
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        public Object mapRow(ResultSet rs,int index) throws SQLException
                                                                               
                                                                               
                                                                                               
                                                                                                                        {
                                                                               
                                                                               
                                                                                               
                                                                                                                            User u = new User();
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setId(rs.getString("ID"));
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setName(rs.getString("Name"));
                                                                               
                                                                               
                                                                                               
                                                                                                                            u.setPassword(rs.getString("Password"));
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                            return u;
                                                                               
                                                                               
                                                                                               
                                                                                                                        }
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void selectWithTemp()
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        String sql = "select * from admin";
                                                                               
                                                                               
                                                                                               
                                                                                                                              
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                        jdbcTemplate.query(sql,new RowCallbackHandler() {
                                                                               
                                                                               
                                                                                               
                                                                                                                                public void processRow(ResultSet rs) throws SQLException {
                                                                               
                                                                               
                                                                                               
                                                                                                                                
                                                                                                               
                                                                                                                System.out.println("ID: "+rs.getString("ID")+"   Name: "+rs.getString("name"));
                                                                               
                                                                               
                                                                                               
                                                                                                                                }
                                                                               
                                                                               
                                                                                               
                                                                                                                            } );
                                                                               
                                                                               
                                                                                               
                                                                                                                 
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public List select(String where)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        List list;
                                                                               
                                                                               
                                                                                               
                                                                                                                        String sql = "select * from admin "+where;
                                                                               
                                                                               
                                                                                               
                                                                                                                        list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));
                                                                               
                                                                               
                                                                                               
                                                                                                                        return list;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public User selectById(String id)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   String sql = "select * from admin where id=?";
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   final User u = new User();
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   final Object[] params = new Object[] {id};
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                  
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   jdbcTemplate.query(sql,params, new RowCallbackHandler(){
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                     public void processRow(ResultSet rs) throws SQLException {
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                               u.setId(rs.getString("ID"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                               u.setName(rs.getString("NAME"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                               u.setPassword(rs.getString("PASSWORD"));
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                                     }
                                                                               
                                                                               
                                                                                               
                                                                                                                  
                                                                                                                    });
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                  
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                                   return u;
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void update(String how)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        String sql = how;
                                                                               
                                                                               
                                                                                               
                                                                                                                        jdbcTemplate.update(sql);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                    
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                    public void insert(User u)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";
                                                                               
                                                                               
                                                                                               
                                                                                                                        Object[] params = new Object[] {
                                                                               
                                                                               
                                                                                               
                                                                                                                                            
                                                                                                                        
                                                                                                                               u.getName(),
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                                                                                   
                                                                                                                        
                                                                                                                               u.getPassword()};
                                                                               
                                                                               
                                                                                               
                                                                                                                        jdbcTemplate.update(sql,params);
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                               
                                                                                                                  
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                                }
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
               
                               
                                                 
                               
               
               
                                UserAction.class:
               
               
                               
                                               
                                                               
                                                                               
                                                                                                //
                                                                                                测试类
                                                                                               
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                                public class UserAction {
                                                                               
                                                                               
                                                                                               
                                                                                                                    public static void main(String[] args)
                                                                               
                                                                               
                                                                                               
                                                                                                                    {
                                                                               
                                                                               
                                                                                               
                                                                                                                        Resource resource=new ClassPathResource("beans.xml");
                                                                               
                                                                               
                                                                                               
                                                                                                                        BeanFactory factory = new XmlBeanFactory(resource);        
                                                                               
                                                                               
                                                                                               
                                                                                                                        User user = (User) factory.getBean("user");   
                                                                               
                                                                               
                                                                                               
                                                                                                                        
                                                                                                               
                                                                                                               
                                                                                               
                                                                               
                                                                               
                                                                                               
                                                                                                                       
                                                                                                                 user.selectWithTemp();
                                                                               
                                                                               
                                                                                               
                                                                                                                    }
                                                                               
                                                                               
                                                                                                }
                                                                               
                                                               
                                               
                               
               
               
                               
                                                 
                               
               
       
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17474/showart_1372052.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP