zoukankan      html  css  js  c++  java
  • BDUtils

    BDUtils

    在使用JDBC进行开发时,冗余代码过多,为了简化JDBC开发,我们采用apache commons组件一个成员:DBUtils。

             DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。

    DBUtils是java编程中的数据库操作实用工具,DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

    增删改:

    update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

    新增

        public int add(String sname) throws SQLException{

           QueryRunner qr=new QueryRunner();

           Connection conn=JDBC.getCon();

           String sql="insert into sort(sname) values(?)";

           int row=qr.update(conn,sql,sname);

           conn.close();

           return row;

        }

     

    修改分类

        public int update(int sid,String sname) throws SQLException{

           QueryRunner qr=new QueryRunner();

           Connection conn=JDBC.getCon();

           String sql="update sort set sname=? where sid=?";

           int row=qr.update(conn,sql,sname,sid);

           conn.close();

           return row;

        }

     

     

    查询:

    query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

    ResultSetHandler结果集处理类:

    ArrayHandler  将结果集中的第一条记录封装到一个Object[]数组中:new ArrayHandler()

    ArrayListHandler  将结果集中的每一条记录都封装到一个Object[]数组中:new ArrayListHandler()

    BeanHandler  将结果集中第一条记录封装到一个指定的类中:new BeanHandler<Sort>(Sort.class)

    BeanListHandler  将结果集中每一条记录封装到指定的自定义类中,将这些类在封装到List集合中:new BeanListHandler<自定义类>(类名.class)

    ColumnListHandler  将结果集中指定的列的字段值,封装到一个List集合中:new ColumnListHandler<String>("字段名")

    ScalarHandler  它是用于单数据。例如select count(*) from 表操作。:new ScalarHandler<Long>()

    MapHandler  将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据

    MapListHandler  将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合

    连接池

    实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池

    常见的连接池:DBCP、C3P0。

    DBCP连接池

    导入jar包:

    commons-dbcp-1.4.jar

    commons-pool-1.5.6.jar

    编写工具类

    public static final String DRIVER = "com.mysql.jdbc.Driver";
        public static final String URL = "jdbc:mysql://localhost:3306/xiangmu3?useUnicode=true&characterEncoding=UTF-8";
        public static final String USERNAME = "root";
        public static final String PASSWORD = "123456";
        /*
         * 创建连接池BasicDataSource
         */
        public static BasicDataSource dataSource = new BasicDataSource();
        
        //创建ThreadLocal对象
        private static ThreadLocal<Connection> t1=new ThreadLocal<Connection>();
        
        //静态代码块
        static {
            //对连接池对象 进行基本的配置
            dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
            dataSource.setUrl(URL); //指定要连接的数据库地址
            dataSource.setUsername(USERNAME); //指定要连接数据的用户名
            dataSource.setPassword(PASSWORD); //指定要连接数据的密码
        }
        /*
         * 返回连接池对象
         */
        public static DataSource getDataSource(){
            return dataSource;
        }
        //从连接池中获取一条连接
        public static Connection getconn(){
            Connection conn=null;
            try {
                conn= dataSource.getConnection();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return conn;
        }
        //获取当前ThreadLocal对象中携带的连接对象
        public static Connection getCurrentConn(){
            Connection conn=t1.get();
            if(conn==null){
                conn=getconn();
                t1.set(conn);
            }
            return conn;
        }
        //开启事务
        public static void start(){
            try {
                getCurrentConn().setAutoCommit(false);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //回滚事务
        public static void roolback(){
            try {
                getCurrentConn().rollback();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //提交事务
        public static void commit(){
            try {
                getCurrentConn().commit();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    使用:

    QueryRunner(MyDBUtils.getDataSource())方法中有个构造方法,直接传连接池对象

  • 相关阅读:
    少走弯路 就要这样做数据分析
    少走弯路 就要这样做数据分析
    数据挖掘与CRM
    大数据精准营销的关键“三部曲”及核心“用户画像”
    大数据精准营销的关键“三部曲”及核心“用户画像”
    常见机器学习算法比较
    常见机器学习算法比较
    解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing
    机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation
    Java 实现选择排序
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10708630.html
Copyright © 2011-2022 走看看