zoukankan      html  css  js  c++  java
  • DBUtils工具类的使用

    DBUtils工具类

    1.DBUtils工具类,由apache组织提供的工具类,对JDBC做了一些简单封装。    做了查询的封装,把查询的结果封装到List集合 Map集合 JavaBean对象中 做了增删改的封装,编写代码比较少 2.需要导入开发的jar包 commons-dbutils-1.4.jar

    3.常见的
    QueryRunner
      1.QueryRunner类可以来完成增删改查所有的功能

      2.常用的方法    

    QueryRunner() -- 构造方法,没有任何参数,说明他不管理连接的。
         QueryRunner(DataSource ds)                                    -- 构造方法,传入连接池,说明他已经管理连接(从连接池中获取连接,归还连接)
    
         int update(String sql, Object... params)                      -- 连接已经管理了
         int update(Connection conn, String sql, Object... params)     -- 说明连接没有管理
    
         <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)        
         <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
    
         int [] batch(String sql, Object[][] params)                   -- 批处理的方法(批量执行一些SQL语句)new Object[][]{{xx},{yy}}
    
    
    4.常见的ResultSetHandler接口  
      1.ResultSetHandler接口,提供了一个方法,让用户自己来封装结果集。
      2.接口中提供了9个实现类,封装结果集的类型都是不同的
          BeanHandler               -- 把一条记录封装到一个JavaBean的对象中。
          BeanListHandler           -- 把一条记录封装到一个JavaBean对象中,再把这些JavaBean封装到一个List集合中。List<JavaBean>
    
          ArrayHandler              -- 把一条记录封装到一个数组中
          ArrayListHandler          -- 把一条记录封装到一个数组中,把这些数组封装到List集合中
    
          MapHandler                -- 把一条记录封装到Map集合中
          MapListHandler            -- 把一条记录封装到Map集合中,这些map封装到List集合中
    
          ColumnListHandler         -- 查询的是某列的数据(select username from t_account),把该列封装到List集合中
    
          KeyedHandler              -- 把一条记录封装到Map集合中,再把这些map封装到一个大的map集合中
    
          ScalarHandler             -- 封装的是聚集函数(count sum avg max min)
    

     例子:

        重写Java ee_02版本增删检查方法:

        重写前的UserDaoImpl类:

    package org.Impl;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.ResultSetHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.KeyedHandler;
    import org.dao.UserDao;
    import org.model.User;
    import org.util.DBUtil;
    
    /**
     * 
     * @author H_Pioneer
     * 接口实现类
     */
    
    public class UserDaoImpl implements UserDao{
        @Override
        // 定义添加方法
        public boolean addUser(User u) {
    
            boolean flag=false;
             Connection conn=null;
            PreparedStatement pst=null;
            
            try{
                conn=DBUtil.getConnection();
                String sql="insert into user (username,password) values(?,?)";
                pst=conn.prepareStatement(sql);
                
                pst.setString(1, u.getName());
                pst.setString(2, u.getPassword());
        
                int rows= pst.executeUpdate();
        
                if (rows > 0){
                    flag=true;
                }
                }catch(Exception ex){
                    ex.printStackTrace();
                }finally{
                    DBUtil.closeResource(conn, pst);
                }
                return flag;
                
            
        }
    
        @Override
        public User getUserByName(String username) {
            Connection conn = null;
            Statement st = null;
            ResultSet rs = null;
            User u = new User();
            String sql = "select * from user where username ="+"'"+username+"'";
            
                try {
                    conn = DBUtil.getConnection();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            
            
            try {
            
                st = conn.createStatement();
                rs = st.executeQuery(sql);
                
                while(rs.next()){
                    u.setName(rs.getString("username"));
                    u.setPassword(rs.getString("password"));
                }
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally{
                    DBUtil.closeResource(conn,st,rs);
                }
                return u;
                
        }
    
        @Override
        public boolean checkLogin(String username, String password) {
            
            boolean flag = false;
            User u = new User();
            u = getUserByName(username);
    
            if(u.getPassword().equals(password)) {
                flag = true;
            }
                return flag;
            }
    }

        重写后的UserDaoImpl类:

    package org.Impl;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.ResultSetHandler;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.KeyedHandler;
    import org.dao.UserDao;
    import org.model.User;
    import org.util.DBUtil;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class IUserDaoImpl implements UserDao {
    
        @Override
        public boolean addUser(User u) {
            
            boolean flag = false;
        
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            
            String sql="insert into user (username,password) values(?,?)";
            
            try {
                
                int rows = runner.update(sql , new String[]{u.getName(),u.getPassword()});
                if (rows > 0){
                    flag=true;
                }
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return flag;            
        }
        
        @Override
        public User getUserByName(String username) {
            User u= new User();
    
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            
            String sql = "select * from user where username =?";
    
            try {
            
            u = runner.query(sql, new BeanHandler<User>(User.class),username );
            
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
            return u;    
        }
        
        @Override
        public boolean checkLogin(String username, String password) {
            boolean flag = false;
            User u = new User();
            u = getUserByName(username);
        
            if(u.getPassword().equals(password)) {
                flag = true;
            }
                return flag;
            }
    }

     

     
     
  • 相关阅读:
    [VB]VB操作Execl大全
    架构实战软件架构设计的过程
    “如何管理软件企业”之软件行业的三类主要盈利模式
    交互设计指南
    编写高质量代码Web前端开发修炼之道
    《裂变——看得见的未来》新书首发式暨读者联欢会
    只懂执行其他人测试想法的人,不能算真正的测试人
    敏捷联盟Gordon Pask奖获得者讲“测试驱动开发”(TDD)
    《裂变》作者爆料:欺世盗名者绝非唐骏一人
    《团队之美》的那些作者们
  • 原文地址:https://www.cnblogs.com/HPioneer/p/6581203.html
Copyright © 2011-2022 走看看