commons-dbutils-1.6.jar — 操作JDBC链接数据库 并且执行SQL语句 处理返回的结果集
三个核心类
DbUtils — 关闭资源方法(安静的关闭 不需要异常处理)
Query Runner — 执行SQL语句 并且返回你想要的结果集
参数 ResultSetHandler 是个接口
(使用实现类 想要什么结果集就传入该接口的实现类)
更新
多参数传参方式1 — 利用数组
方式2 — 直接传递 注意 要和占位符的顺序对应
插入一条数据 使用QueryRunner
查询操作
8个结果集
结果集容器1
ArrayHandler
把查询出来的数据第一行 放进对象数组中 并返回
@Test
public void select1() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
// 调用查询方法
// 传入什么容器 该类就把数据放到什么容器中 给你返回
Object[] query = qr.query(connection, sql,new ArrayHandler());
for (Object object : query) {
System.out.println(object);
}
DbUtils.closeQuietly(connection);
}
结果集容器2
ArrayListHandler
把查询出来的每一条记录 放进List集合中
每一条记录 是一个对象数组
@Test
public void select2() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
List<Object[]> list = qr.query(connection, sql, new ArrayListHandler());
for (Object[] objects : list) {
for (Object object : objects) {
System.out.print(object);
}
System.out.println();
}
DbUtils.closeQuietly(connection);
}
结果集容器3
BeanHandler
把结果集的第一行 封装成一个javaBean对象
javaBean对象规则
1.成员变量私有化
2.提供空参的构造方法
3.提供set/get方法
符合以上规则的实体类创建出来的对象 就是一个javaBean对象
@Test
public void select3() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
// 要把哪个javaBean实体类 传进去
// 类名.class
Sort sort = qr.query(connection, sql, new BeanHandler<>(Sort.class));
if (sort == null) {
System.out.println("没有该条数据");
}
System.out.println(sort);
DbUtils.closeQuietly(connection);
}
结果集容器4
BeanListHandle
把javaBean对象放入list集合中返回
@Test
public void select4() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
List<Sort> list = qr.query(connection, sql, new BeanListHandler<>(Sort.class));
for (Sort sort : list) {
System.out.println(sort);
}
DbUtils.closeQuietly(connection);
}
结果集容器5
ColumnListHandler
返回指定类的数据 放在list中返回
@Test
public void select5() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
List<Object> list = qr.query(connection, sql, new ColumnListHandler<>(4));
for (Object object : list) {
System.out.println(object);
}
DbUtils.closeQuietly(connection);
}
结果集容器6
ScalarHandler
查询时只有一个结果的时候
@Test
public void select6() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select count(*) from sort";
long query = qr.query(connection, sql, new ScalarHandler<Long>());
System.out.println(query);
DbUtils.closeQuietly(connection);
}
结果集容器7
MapHandler
将结果集第一行数据 封装到Map集合中
Map<键,值> 键:列名 值:这列的数据
@Test
public void select7() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
Map<String, Object> map = qr.query(connection, sql, new MapHandler());
for (String key : map.keySet()) {
System.out.println(key + " " + map.get(key));
}
DbUtils.closeQuietly(connection);
}
结果集容器8
MapListHandler
将结果集每行数据 封装到Map集合中
Map<键,值> 键:列名 值:这列的数据
@Test
public void select8() throws SQLException {
QueryRunner qr = new QueryRunner();
Connection connection = JDBCUtil.getConnection();
String sql = "select * from sort";
List<Map<String,Object>> list = qr.query(connection, sql, new MapListHandler());
for (Map<String, Object> map : list) {
for (String key : map.keySet()) {
System.out.println(key + " " + map.get(key));
}
System.out.println("------");
}
DbUtils.closeQuietly(connection);
}
数据库连接池
为了解决频繁创建数据库链接和释放数据库链接的问题
使用了 数据库连接池来解决
并且 除了一套规范 数据库连接池规范
javax.sql.DataSource java扩展包
由数据库厂商来提供
常用数据连接池 DBCP C3P0
需要导入的jar包(dbcp中依赖pool架包中的类)
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
BasicDataSource 是 DataSource(规范类) 的实现类
基础设置(要使用数据库连接池 必须要设置的内容)
mysql驱动类 com.mysql.jdbc.Driver
访问数据库链接地址
数据库的访问用户名和密码
设置dataSource
mysql 驱动类的全限定名
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/myjdbc");
dataSource.setUsername("root");
dataSource.setPassword("123456");
扩展设置
初始化连接数
dataSource.setInitialSize(10);
最大活动数
dataSource.setMaxActive(8);
最大空闲连接数
dataSource.setMaxIdle(5);
最小空闲连接数
dataSource.setMinIdle(2);