BDUtils
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())方法中有个构造方法,直接传连接池对象
