A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小鲁哥哥 黑马粉丝团   /  2017-10-19 15:59  /  1684 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小鲁哥哥 于 2017-10-19 16:15 编辑

小鲁哥哥白话笔记-DBUtils

上一篇里我们聊了关于Properties配置文件的相关内容,今天我们和大家聊一聊关于DBUtils工具类的使用。
在说DBUtils工具类之前我们先给大家介绍一下什么是JavaBean类。
JavaBean:JavaBean就是一个类,在开发中常用封装数据。具有如下特性:
1.  需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
2.    提供私有字段:private 类型 字段名;
3.    提供getter/setter方法:
4.    提供无参构造
DBUtils工具类:
DButils工具类的介绍个三个核心类:
* DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
* DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
* DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。
Dbutils三个核心功能介绍:
* QueryRunner中提供对sql语句操作的API.
* update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作
* query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
* ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
* DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
QueryRunner类的update方法介绍:
* update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作
*  使用QueryRunner类,实现对数据表的insert delete update
*  调用QueryRunner类的方法 update (Connection con,String sql,Object...param)
*  Object...param 可变参数,Object类型,SQL语句会出现?占位符
*  数据库连接对象,自定义的工具类传递
QueryRunner类实现insert添加数据:
案例代码:
           
[Java] 纯文本查看 复制代码
 public class QueryRunnerDemo {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
                public static void main(String[] args)throws SQLException {
                    insert();            
                }                
                /*
                 * 定义方法,使用QueryRunner类的方法update向数据表中,添加数据
                 */
                public static void insert()throws SQLException{
                    //创建QueryRunner类对象
                    QueryRunner qr = new QueryRunner();
                    String sql = "INSERT INTO sort (sname,sprice,sdesc)VALUES(?,?,?)";
                    //将三个?占位符的实际参数,写在数组中
                    Object[] params = {"体育用品",289.32,"购买体育用品"};
                    //调用QueryRunner类的方法update执行SQL语句
                    int row = qr.update(con, sql, params);
                    System.out.println(row);
                    DbUtils.closeQuietly(con);
                }
            }
QueryRunner类实现update修改数据:
案例代码
         
[Java] 纯文本查看 复制代码
  public class QueryRunnerDemo {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
                public static void main(String[] args)throws SQLException {
                    update();
                }                
                /*
                 *  定义方法,使用QueryRunner类的方法update将数据表的数据修改
                 */
                public static void update()throws SQLException{
                    //创建QueryRunner类对象
                    QueryRunner qr = new QueryRunner();    
                    //写修改数据的SQL语句
                    String sql = "UPDATE sort SET sname=?,sprice=?,sdesc=? WHERE sid=?";
                    //定义Object数组,存储?中的参数
                    Object[] params = {"花卉",100.88,"情人节玫瑰花",4};
                    //调用QueryRunner方法update
                    int row = qr.update(con, sql, params);
                    System.out.println(row);
                    DbUtils.closeQuietly(con);
                }                
            }
QueryRunner类实现delete删除数据:
案例代码
         
[Java] 纯文本查看 复制代码
   public class QueryRunnerDemo {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
                public static void main(String[] args)throws SQLException {
                    delete();
                }
                /*
                 *  定义方法,使用QueryRunner类的方法delete将数据表的数据删除
                 */
                public static void delete()throws SQLException{
                    //创建QueryRunner类对象
                    QueryRunner qr = new QueryRunner();    
                    //写删除的SQL语句
                    String sql = "DELETE FROM sort WHERE sid=?";
                    //调用QueryRunner方法update
                    int row = qr.update(con, sql, 8);
                    System.out.println(row);
                    /*
                     *  判断insert,update,delete执行是否成功
                     *  对返回值row判断
                     *  if(row>0) 执行成功
                     */
                    DbUtils.closeQuietly(con);
                }                
            }
DBUtils工具类结果集处理的方式:
        * a: QueryRunner实现查询操作
            *    query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
        * b: 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集合
QueryRunner类的方法query:
* a: QueryRunner数据查询操作
* 调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object..params)
*  ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类
*  Object..params SQL语句中的?占位符
*  注意: query方法返回值,返回的是T 泛型, 具体返回值类型,跟随结果集处理方式变化
* b: 案例代码
         
[Java] 纯文本查看 复制代码
  public class QueryRunnerDemo1 {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
            }
结果集处理ArrayHandler:
案例代码
         
[Java] 纯文本查看 复制代码
   public class QueryRunnerDemo1 {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
                public static void main(String[] args) throws SQLException{
                    arrayHandler();
                }    
                /*
                 *  结果集第一种处理方法, ArrayHandler
                 *  将结果集的第一行存储到对象数组中  Object[]
                 */
                public static void arrayHandler()throws SQLException{
                    QueryRunner qr = new QueryRunner();
                    String sql = "SELECT * FROM sort";
                    //调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
                    //返回对象数组
                    Object[] result = qr.query(con, sql, new ArrayHandler());
                    for(Object obj : result){
                        System.out.print(obj);
                    }
                }    
            }
结果集处理ArrayListHandler:
        * a: 案例代码
[Java] 纯文本查看 复制代码
           public class QueryRunnerDemo1 {[/align]                private static Connection con = JDBCUtilsConfig.getConnection();
                public static void main(String[] args) throws SQLException{
                    arrayListHandler();
                }
                /*
                 *  结果集第二种处理方法,ArrayListHandler
                 *  将结果集的每一行,封装到对象数组中, 出现很多对象数组
                 *  对象数组存储到List集合
                 */
                public static void arrayListHandler()throws SQLException{
                    QueryRunner qr = new QueryRunner();
                    String sql = "SELECT * FROM sort";        
                    //调用query方法,结果集处理的参数上,传递实现类ArrayListHandler
                    //方法返回值 每行是一个对象数组,存储到List
                    List<Object[]> result=  qr.query(con, sql, new ArrayListHandler());
                    
                    //集合的遍历
                    for( Object[] objs  : result){
                        //遍历对象数组
                        for(Object obj : objs){
                            System.out.print(obj+"  ");
                        }
                        System.out.println();
                    }
                }
            }

点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
     黑马程序员济南中心联系电话:0531-55696830


3 个回复

倒序浏览
总结的很全面,不错。
回复 使用道具 举报
谢谢分享啊
回复 使用道具 举报
签到,积分获取,完毕.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马