DBUtils数据库工具类

来源:互联网 发布:网络女神瑞思 编辑:程序博客网 时间:2024/05/18 03:26
/**
 * 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进行添加记录 */@Testpublic 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进行更新操作 */@Testpublic 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进行删除操作 */@Testpublic 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 + "  ");}}}


原创粉丝点击