• DBUtils


    1.JDBC的问题:

    1、操作过程复杂,代码操作一个模式,大量的重复。
    2、结果集难以处理,需要将拿到的ResultSet一个一个转成JavaBean,后来形成List,太麻烦了。
    3、到处都强制检查SQLException,影响代码的美观和可读性。

    2.dbutils API

    ------------------------------------
    包org.apache.commons.dbutils 
            DbUtils是一个为简化JDBC操作的小类库。
    接口摘要
    ResultSetHandler 将ResultSet转换为别的对象的工具。
    RowProcessor 将ResultSet行转换为别的对象的工具。 
    类摘要
    BasicRowProcessor RowProcessor接口的基本实现类。 
    BeanProcessor BeanProcessor匹配列明到Bean属性名,并转换结果集列到Bean对象的属性中。
    DbUtils 一个JDBC辅助工具集合。 
    ProxyFactory 产生JDBC接口的代理实现。 
    QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。 
    QueryRunner 使用可插拔的策略执行SQL查询并处理结果集。
    ResultSetIterator 包装结果集为一个迭代器。 
      
    ------------------------------------
    包org.apache.commons.dbutils.handlers 
            ResultSetHandler接口的实现类
    类摘要
    AbstractListHandler 将ResultSet转为List的抽象类
    ArrayHandler 将ResultSet转为一个Object[]的ResultSetHandler实现类
    ArrayListHandler 将ResultSet转换为List<Object[]>的ResultSetHandler实现类
    BeanHandler 将ResultSet行转换为一个JavaBean的ResultSetHandler实现类
    BeanListHandler 将ResultSet转换为List<JavaBean>的ResultSetHandler实现类
    ColumnListHandler 将ResultSet的一个列转换为List<Object>的ResultSetHandler实现类
    KeyedHandler 将ResultSet转换为Map<Map>的ResultSetHandler实现类
    MapHandler 将ResultSet的首行转换为一个Map的ResultSetHandler实现类
    MapListHandler 将ResultSet转换为List<Map>的ResultSetHandler实现类
    ScalarHandler 将ResultSet的一个列到一个对象。
     
    ------------------------------------
    包org.apache.commons.dbutils.wrappers 
            添加java.sql类中功能包装类。
    类摘要
    SqlNullCheckedResultSet 在每个getXXX方法上检查SQL NULL值的ResultSet包装类。
    StringTrimmedResultSet 取出结果集中字符串左右空格的ResultSet包装类。

    3.DEMO

       public static void test_insert() throws SQLException { 
                    System.out.println("-------------test_insert()-------------"); 
                    //创建连接 ,ConnTools为自己定义的connection工具
                    Connection conn = ConnTools.makeConnection(); 
                    //创建SQL执行工具 
                    QueryRunner qRunner = new QueryRunner(); 
                    //执行SQL插入 
                    int n = qRunner.update(conn, "insert into user(name,pswd) values('iii','iii')"); 
                    System.out.println("成功插入" + n + "条数据!"); 
                    //关闭数据库连接 
                    DbUtils.closeQuietly(conn); 
            } 
    
            public static void test_find() throws SQLException { 
                    System.out.println("-------------test_find()-------------"); 
                    //创建连接 
                    Connection conn = ConnTools.makeConnection(); 
                    //创建SQL执行工具 
                    QueryRunner qRunner = new QueryRunner(); 
                    //执行SQL查询,并获取结果 
                    List<User> list = (List<User>) qRunner.query(conn, "select id,name,pswd from user", new BeanListHandler(User.class)); 
                    //输出查询结果 
                    for (User user : list) { 
                            System.out.println(user); 
                    } 
                    //关闭数据库连接 
                    DbUtils.closeQuietly(conn); 
            } 
    

      

  • 相关阅读:
    ansible笔记(11):初识ansible playbook(二)
    Linux下查看占用CPU与内存最高的进程
    ansible笔记(10):初识ansible playbook
    AbpZero Http 模式下 Chrome浏览器因Cookie 不能登录
    Tomcat 8443&8080 并存
    接入腾讯cos文件存储
    安卓包打渠道标签
    java Android与PHP encode的区别
    thinkphp常用
    phalcon task任务
  • 原文地址:https://www.cnblogs.com/mywy/p/5044791.html
Copyright © 2020-2023  润新知