/**
* DBUtils : 数据库 工具类
* 由于jdbc开发:代码过多,重复,冗余;
* apache : DBUtils: 简化的JDBC开发框架(工具包):commons-dbutils-1.7.jar
* 特点:操作实用工具:小巧简单
* 三个核心的工具类:
* queryRunner:提供sql语句操作的api;
* resultSetHandler接口:定义select操作,将结果封装;
* DBUtils类:工具类,定义了关闭资源与事物的处理方法;
*
* queryRunner:sql操作:
* 1、增删改:update(Connection conn, String sql, Object... params); conn取得连接 ,sql语句 ,params 参数;
* 2、query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) 用来完成表数据的查询操作
* resultSetHandler接口实现类:
* ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的 每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
* javabean:
* 封装数据库的属性(字段)
* 1、需要实现接口:implements Serializable
* 2、提供私有字段:private
* 3、提供getter and setter
* 4、必须要有无参构造方法(当写了带参构造器时,会自动覆盖掉无参构造器,所以要重写无参构造器)
*
*
*
*
* DBUtils : 数据库 工具类
* 由于jdbc开发:代码过多,重复,冗余;
* apache : DBUtils: 简化的JDBC开发框架(工具包):commons-dbutils-1.7.jar
* 特点:操作实用工具:小巧简单
* 三个核心的工具类:
* queryRunner:提供sql语句操作的api;
* resultSetHandler接口:定义select操作,将结果封装;
* DBUtils类:工具类,定义了关闭资源与事物的处理方法;
*
* queryRunner:sql操作:
* 1、增删改:update(Connection conn, String sql, Object... params); conn取得连接 ,sql语句 ,params 参数;
* 2、query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) 用来完成表数据的查询操作
* resultSetHandler接口实现类:
* ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的 每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
* javabean:
* 封装数据库的属性(字段)
* 1、需要实现接口:implements Serializable
* 2、提供私有字段:private
* 3、提供getter and setter
* 4、必须要有无参构造方法(当写了带参构造器时,会自动覆盖掉无参构造器,所以要重写无参构造器)
*
*
*
*
*/
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import j0815_day45.utils.JDBCUtils;
public class QueryRunnerDemo {
/*
* 使用QueryRunner类方法:update进行添加记录
*/
@Test
public void insert() throws SQLException {
//取得连接
JDBCUtils jdbcUtils = new JDBCUtils();
Connection conn = jdbcUtils.getConnection();
//创建QueryRunner对象
QueryRunner qr = new QueryRunner();
String sql = "insert into t_user(username,userpwd) values(?,?)";
//实际参数,简单设置在数组
Object[] params = {"lwc","142014068"};
//update(取得连接, sql, 参数);
int i = qr.update(conn,sql,params);
System.out.println(i);
//关闭资源
DbUtils.close(conn);
}
/*
* 使用QueryRunner类方法:update进行更新操作
*/
@Test
public void update() throws SQLException {
JDBCUtils jdbcUtils = new JDBCUtils();
Connection conn = jdbcUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "update t_user set username=? where id=?";
//实际参数,简单设置在数组
Object[] params = {"老朱",3};
//update(取得连接, sql, 参数);
int i = qr.update(conn, sql, params);
System.out.println(i);
//关闭资源
DbUtils.close(conn);
}
/*
* 使用QueryRunner类方法:update进行删除操作
*/
@Test
public void delete() throws SQLException {
//取得连接
JDBCUtils jdbcUtils = new JDBCUtils();
Connection conn = jdbcUtils.getConnection();
//创建QueryRunner对象
QueryRunner qr = new QueryRunner();
String sql = "delete from t_user where id = ?";
//实际参数,简单设置在数组
Object[] params = {18};
//update(取得连接, sql, 参数);
int i = qr.update(conn, sql, params);
System.out.println(i);
//关闭资源
DbUtils.close(conn);
}
}
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import j0815_day45.pojo.User;
import j0815_day45.utils.JDBCUtils;
/*
* query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) 用来完成表数据的查询操作
* resultSetHandler接口实现类:
ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
*/
public class QueryRunnerDemo01 {
// 取得数据库的连接
static JDBCUtils jdbcUtils = new JDBCUtils();
private static Connection conn = jdbcUtils.getConnection();
public static void main(String[] args) throws SQLException {
// arrayHandler();
// arrayListHandler();
// beanHandler();
// beanListHandler();
// columnListHandler();
// scalarHandler();
// mapHandler();
mapListHandler();
}
/*
* MapListHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
*/
public static void mapListHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
List<Map<String, Object>> result = qr.query(conn, sql, new MapListHandler());
// 遍历对象
for (Map<String, Object> map : result) {
for (String key : map.keySet()) {
System.out.print(key + ":" + map.get(key) + " ");
}
// 转行
System.out.println("");
}
}
/*
* MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
*/
public static void mapHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
Map<String, Object> result = qr.query(conn, sql, new MapHandler());
// 遍历map集合
for (String key : result.keySet()) {
System.out.print(key + ":" + result.get(key) + " ");
}
}
/*
* ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
*/
public static void scalarHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select count(*) from t_user";
// 处理结果集Object[]
Long result = qr.query(conn, sql, new ScalarHandler<Long>()); // 制定字段
System.out.println(result);
}
/*
* ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
*/
public static void columnListHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
List<Object> result = qr.query(conn, sql, new ColumnListHandler<Object>("uname")); // 制定字段
// 遍历对象
for (Object objects : result) {
System.out.println(objects); // tostring
}
}
/*
* BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
*/
public static void beanListHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
List<User> result = qr.query(conn, sql, new BeanListHandler<User>(User.class));
// 遍历对象
for (User objects : result) {
System.out.println(objects); // tostring
}
}
/*
* BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
*/
public static void beanHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
User result = qr.query(conn, sql, new BeanHandler<User>(User.class));
// 打印
System.out.println(result); // tostring
}
/*
* ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
*/
public static void arrayListHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
List<Object[]> result = qr.query(conn, sql, new ArrayListHandler());
// 遍历对象
for (Object[] objects : result) {
// 遍历对象的信息
for (Object object : objects) {
System.out.print(object + " ");
}
// 转行
System.out.println("");
}
}
/*
* ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
*/
public static void arrayHandler() throws SQLException {
// 创建queryRunner对象
QueryRunner qr = new QueryRunner();
// sql语句
String sql = "select * from t_user";
// 处理结果集Object[]
Object[] result = qr.query(conn, sql, new ArrayHandler());
// 遍历数组
for (Object object : result) {
System.out.print(object + " ");
}
}
}