日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

QueryRunner使用

發(fā)布時(shí)間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QueryRunner使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在相繼學(xué)習(xí)了JDBC和數(shù)據(jù)庫(kù)操作之后,我們明顯感到編寫(xiě)JDBC代碼并非一件輕松的事兒。為了幫助我們更高效的學(xué)習(xí)工作,從JDBC的繁重代碼中解脫出來(lái),老佟給我們?cè)敱M介紹了一個(gè)簡(jiǎn)化JDBC操作的組件——DBUtils。我們今天主要學(xué)習(xí)了它所提供的兩個(gè)類(lèi)和一個(gè)接口。

組件下載地址:http://commons.apache.org/dbutils/

DbUtils類(lèi)(org.apache.commons.dbutils.DbUtils)主要負(fù)責(zé)裝載驅(qū)動(dòng)、關(guān)閉連接的常規(guī)工作。

1.???????close: 檢查所提供的參數(shù)是不是NULL,如果不是的話,它們就關(guān)閉連接、聲明和結(jié)果集。

2.???????CloseQuietly:避免連接、聲明或結(jié)果集為NULL的情況被關(guān)閉。

3.???????CommitAndCloseQuietly(Connection conn):用來(lái)提交連接,然后關(guān)閉連接,并且在關(guān)閉連接時(shí)不向上拋出在關(guān)閉時(shí)發(fā)生的一些SQL異常。

4.???????LoadDriver(String driveClassName): 裝載并注冊(cè)JDBC驅(qū)動(dòng)程序,如果成功就返回TRUE。

QreryRunner類(lèi)(org.apache.commons.dbutils.QueryRunner) 顯著的簡(jiǎn)化了SQL查詢,并與ResultSetHandler協(xié)同工作將使編碼量大為減少。

1.???????query(Connection conn, String sql, Object[] params, ResultSetHandler rsh):執(zhí)行選擇查詢,在查詢中,對(duì)象陣列的值被用來(lái)作為查詢的置換參數(shù)。

2.???????query(String sql, Object[] params, ResultSetHandler rsh):方法本身不提供數(shù)據(jù)庫(kù)連接,執(zhí)行選擇查詢,在查詢中,對(duì)象陣列的值被用來(lái)作為查詢的置換參數(shù)。

3.???????query(Connection conn, String sql, ResultSetHandler rsh):執(zhí)行無(wú)需參數(shù)的選擇查詢。

4.???????update(Connection conn, String sql, Object[] params):被用來(lái)執(zhí)行插入、更新或刪除(DML)操作。

ResultSetHandler接口(org.apache.commons.dbutils.ResultSethandler)執(zhí)行處理一個(gè)結(jié)果集對(duì)象,將數(shù)據(jù)轉(zhuǎn)變并處理為任何一種形式,供其他應(yīng)用使用。

1.???????Object handle (java.sql.ResultSet .rs) :結(jié)果集(ResultSet)作為參數(shù)傳入方法內(nèi),處理這個(gè)結(jié)果集,返回一個(gè)對(duì)象。

ArrayHandler

ArrayListHandler

BeanHandler

BeanListHandler

MapHandler

MapListHandler

ScalarHandler

我們學(xué)習(xí)了此組件的兩個(gè)類(lèi)和一個(gè)接口以后,寫(xiě)了下列代碼供參考。

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.BeanListHandler;

public class TestQueryRunner {

?????????public static void main(String[] args) throws SQLException {

???????????????????// TODO Auto-generated method stub

???????????????????//queryOracle();

???????????????????update();

?????????}

????????

?????????private static void update() throws SQLException{

???????????????????QueryRunner runner = new QueryRunner();

???????????????????Connection conn = DBManager.getConnection();

???????????????????//刪除非 manager 中工資 低于 5000 的員工

???????????????????String sql = "UPDATE examstudent SET student_name = ? WHERE flow_id = ?";

???????????????????Object [] params = new Object[]{"Jerry", 5000};

??????????????????

???????????????????runner.update(conn, sql, params);

?????????}

????????

?????????private static void insert() throws SQLException{

???????????????????QueryRunner runner = new QueryRunner();

???????????????????Connection conn = DBManager.getConnection();

???????????????????//刪除非 manager 中工資 低于 5000 的員工

?????????????????String sql = "INSERT INTO examstudent(flow_id, type, id_card, exam_card, student_name, location, grade) VALUES(?, ?, ?, ?, ?, ?, ?)";

???????????????????Object [] params = new Object[]{5000, 6, "身份證", "準(zhǔn)考證", "Tom", "北京", 99};

??????????????????

???????????????????runner.update(conn, sql, params);

?????????}

????????

?????????private static void delete() throws SQLException{

???????????????????QueryRunner runner = new QueryRunner();

???????????????????Connection conn = DBManager.getConnection();

???????????????????//刪除非 manager 中工資 低于 5000 的員工

???????????????????String sql = "delete from employees " +

????????????????????????????????????????????????"where employee_id not in " +

????????????????????????????????????????????????"?????(select distinct d.manager_id from departments d where d.manager_id is not null) " +

????????????????????????????????????????????????"and salary < ?";

???????????????????System.out.println(sql);

???????????????????Object [] params = new Object[]{5000};

??????????????????

???????????????????runner.update(conn, sql, params);

?????????}

????????

?????????private static void queryOracle() throws SQLException{

???????????????????QueryRunner runner = new QueryRunner();

???????????????????Connection conn = DBManager.getConnection();

???????????????????//oracle 中的別名可以別解析

???????????????????String sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent";

???????????????????Object obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class));

???????????????????System.out.println(obj);

?????????}

?????????private static void query() throws SQLException {

???????????????????//1. 創(chuàng)建一個(gè) QueryRunner 的實(shí)例

???????????????????QueryRunner runner = new QueryRunner();

??????????????????

??????????????????

???????????????????Connection conn = DBManager.getConnection();

???????????????????String sql = "SELECT id, name, address, phone FROM customers WHERE name LIKE ?";

???????????????????Class type = Customer.class;

???????????????????Object [] params = new Object[]{"%%"};

??????????????????

???????????????????//2. 查詢操作

???????????????????//conn: 查詢需要的數(shù)據(jù)庫(kù)連接, sql: 查詢使用的 sql 語(yǔ)句, rsh: 如何轉(zhuǎn)換查詢得到的結(jié)果集, params: 填補(bǔ) sql 語(yǔ)句參數(shù)的數(shù)組

???????????????????Object obj = runner.query(conn, sql, new BeanListHandler(type), params);

???????????????????//System.out.println("^^" + obj);

??????????????????

???????????????????sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent";

???????????????????type = ExamStudent.class;

??????????????????

???????????????????obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class));

???????????????????System.out.println(obj);

???????????????????}

}

總結(jié)

以上是生活随笔為你收集整理的QueryRunner使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。