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;
            }
    }

     

     
     
  • 相关阅读:
    14.4.9 Configuring Spin Lock Polling 配置Spin lock 轮询:
    14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
  • 原文地址:https://www.cnblogs.com/HPioneer/p/6581203.html
Copyright © 2011-2022 走看看