Jakarta Commons DBUtils组件的使用

Jakarta Commons DBUtils组件的使用

一、              下载地址:http://commons.apache.org/downloads/download_dbutils.cgi

 

二、              使用 commons DBUtils组件 将取得的每条记录以键值对的形式储存在Map集合中

再将所有记录以储存在list集合中

代码:

public class MapList_Example {

    public static void main(String[] args) {

       DataBaseConnection();

    }

 

    public static void DataBaseConnection() {

       String DRIVER = "oracle.jdbc.driver.OracleDriver";

       String URL = "jdbc:oracle:thin:scott/tiger@localhost:1521:sky";

       String sql = "select id,name,email,title,content,time from guestbook order by id desc";

       //  用于查询 并将结果保存在Map集合中

       QueryRunner qr = new QueryRunner();

       Connection conn = null;

 

       try {

           // 加载驱动 Class.forName(DRIVER) 一样

           DbUtils.loadDriver(DRIVER);

           conn = DriverManager.getConnection(URL);

           // 将查询的记录保存在list集合中 每天记录在以键值对的形式保存在Map

           List result = (List) qr.query(conn, sql, new MapListHandler());

           // 关闭

           DbUtils.close(conn);

           Map map = null;

           for (int i = 0; i < result.size(); i++) {

              map = (Map) result.get(i);

              System.out.print("id:" + map.get("id") + "/t");

              System.out.print("name:" + map.get("name") + "/t");

              System.out.print("email:" + map.get("email") + "/t");

              System.out.print("title:" + map.get("title") + "/t");

              System.out.print("content:" + map.get("content") + "/t");

              System.out.println("time:" + map.get("time") + "/t");

           }

       } catch (SQLException e) {

           e.printStackTrace();

       }

    }

}

 

 

 

 

 

三、              使用 commons DBUtils组件 将取得的记录以JavaBean的形式储存在list集合中

当然在使用该功能前 要先创建一个JavaBean

package org.cgz.dbutils;

 

public class GuestBook {

    private int id;

    private String name;

    private String phone;

    private String email;

    private String title;

    private String content;

    private String time;

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public String getEmail() {

       return email;

    }

    public void setEmail(String email) {

       this.email = email;

    }

    public String getTitle() {

       return title;

    }

    public void setTitle(String title) {

       this.title = title;

    }

    public String getContent() {

       return content;

    }

    public void setContent(String content) {

       this.content = content;

    }

    public String getTime() {

       return time;

    }

    public void setTime(String time) {

       this.time = time;

    }

    public String getPhone() {

       return phone;

    }

    public void setPhone(String phone) {

       this.phone = phone;

    }

   

}

 

 

BeanListExample.java

 

public class BeanListExample {

    public static void main(String[] args) {

       DataBaseConnection();

    }

    public static void DataBaseConnection() {

       String DRIVER = "oracle.jdbc.driver.OracleDriver";

       String URL = "jdbc:oracle:thin:scott/tiger@localhost:1521:sky";

       String sql = "SELECT id,name,phone,title,email,content,time FROM guestbook ORDER BY id DESC";

       Connection con = null;

       //对应Preparestatment 记忆

       QueryRunner qRunner = new QueryRunner();

       //对应ResultSet记忆

       List result = null;

      

       try {

           DbUtils.loadDriver(DRIVER);

           con = DriverManager.getConnection(URL);

           //将每条记录以JavaBean的形式储存在list

           result = (List)qRunner.query(con, sql, new BeanListHandler(GuestBook.class)) ;

           DbUtils.close(con);

           //遍历输出

           Iterator iter = result.iterator();

           while(iter.hasNext()) {

              GuestBook gBook = (GuestBook)iter.next();

              System.out.println("id:"+gBook.getId()+" ");

              System.out.print("name:"+gBook.getName()+" ");

              System.out.print("phone:"+gBook.getPhone()+" ");

              System.out.print("email:"+gBook.getEmail()+" ");

              System.out.print("title:"+gBook.getTitle()+" ");

              System.out.print("content:"+gBook.getContent()+" ");

              System.out.println("time:"+gBook.getTime()); 

           }

       } catch (SQLException e) {

           e.printStackTrace();

       }

    }

}

 

 

 

总结:个人感觉比较好的地方在于 ResultSet不同的是 可以将记录以不同的方式取出

记忆:

1.       QueryRunner Preparestatment 对应 (QueryRunner功能要强大很多)

2.       DBUtils.load()Class.forName()对应  功能一样 (使用连接池时 就没必要写这步了)

3.       List ResultSet 对应

注意:

MapListHandler  将每条记录以键值对的形式保存(Map集合)

           BeanListHandler 将每条记录以javabean的形式保存

最后将所有记录保存在list集合中

可以使用for循环输出 也可以使用Iterator遍历输出

 

 

四、使用Commons DBUtils  同时使用连接池  执行数据库插入的操作

public void doPost(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       String title = request.getParameter("title");

       String content = request.getParameter("content");

       String categoryId = request.getParameter("category");

      

       DataSource ds = null;

       int result = 0;

       String message = "";

       String sql = "insert into blog(title,category_id,content,created_time) values(?,?,?,now())";

       try {

           //找到Context

           Context context = new InitialContext();

           //找到DataSource

           ds = (DataSource)context.lookup("java:comp/env/jdbc/mysqlds");

           //通过QueryRunner操作数据源获取Connection对象 同时放回连接对象的操作也由QueryRunner来处理 conn.close()

           QueryRunner qRunner = new QueryRunner(ds);

           //将要传递的参数以数组的形式通过update()方法传入SQL语句

           String param[] = {title,content,categoryId};

           //执行SQL语句

           qRunner.update(sql, param);

       } catch (NamingException e) {

           e.printStackTrace();

       } catch (SQLException e) {

           e.printStackTrace();

        }

       //判断添加博文是否成功

       if(result == 1) {

           message = "添加博文成功!";

       }else {

           message = "添加博文失败!";

       }

       //此句曾出现错误 request.setAttribute(message,"message");

       request.setAttribute("message",message);

       request.getRequestDispatcher("/addBlogResult.jsp").forward(request, response);

    }

 

 

小结:

1.       可以直接将获取的数据源对象交给QueryRunner去处理操作 它将从数据源获取Connection连接对象 并会自动将 con连接对象放回到连接池中 conn.close()

2.       QueryRunner中的update方法 可以直接传入以个数组参数 在执行插入操作时 可以直接将需要插入的参数 放在一个数组中 最后一并传给QueryRunnerupdate()方法

           Context context = new InitialContext();

           ds = (DataSource)context.lookup("java:comp/env/jdbc/mysqlds");

             //将数据源对象交给QueryRunner处理

           QueryRunner qRunner = new QueryRunner(ds);

           //将要传递的参数以数组的形式通过update()方法传入SQL语句

           String param[] = {title,content,categoryId};

           //执行SQL语句

           qRunner.update(sql, param);

这样可以减少很多JDBC代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值