BDUtils

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

在使用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/daydb

?useUnicode=true&characterEncoding=UTF-8";

public static final String USERNAME = "root";

    public static final String PASSWORD = "123456";

    /*

     * 创建连接池BasicDataSource

     */

    public static BasicDataSource dataSource = new BasicDataSource();

    //静态代码块

    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;

    }

 

使用:

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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄