博客專欄

        EEPW首頁 > 博客 > java視頻教程之ResultSetHandler常用結果集封裝分享

        java視頻教程之ResultSetHandler常用結果集封裝分享

        發布人:扣丁學堂2 時間:2021-04-22 來源:工程師 發布文章

        //ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]

        //ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中

        //ColumnListHandler:取某一列的數據。封裝到List中。

        //KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,再把這個Map封裝到另外一個Map中,key為指定的字段值。

        //MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中

        //MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List

        //ScalarHandler:適合取單行單列數據

        BeanHandler:把每條記錄封裝成對象,適合取一條記錄

        BeanListHandler把每條記錄封裝成對象,把對象存儲到List集合中,適合取多條記錄

        接下來扣丁學堂小編針對Java在線學習之ResultSetHandler常用結果集封裝案例分析,完成針對結果集的封裝。

        案例代碼

        1.MySQL數據庫創建圖書信息表

        2.創建Book.javajavabean類-->略

        3.建立CSP0連接池-->略

        4.根據需求,使用指定的結果集獲取數據結果


        首先我們先介紹最常用的結果集:

          importjava.sql.ResultSet;
          importjava.sql.SQLException;
          importjava.util.ArrayList;
          importjava.util.List;
          importorg.apache.commons.dbutils.QueryRunner;
          importorg.apache.commons.dbutils.ResultSetHandler;
          importorg.apache.commons.dbutils.handlers.BeanHandler;
          importorg.apache.commons.dbutils.handlers.BeanListHandler;
          importorg.junit.Test;
          importcom.qf.bean.Book;
          importcom.qf.utils.C3P0Utils;
          publicclassDemo_Query{
          //1.BeanHandler把每條記錄封裝成對象適合取一條記錄
          @Test
          publicvoidtestQuery2(){
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          try{
          Bookb=
          qr.query("select*frombookwhereid=?",newBeanHandler<Book>(Book.class),1);
          System.out.println(b);
          }catch(SQLExceptione){
          //TODOAuto-generatedcatchblock
          e.printStackTrace();
          }
          }
          //2.BeanListHandler把每條記錄封裝成對象將對象存儲到List集合中
          @Test
          publicvoidtestQuery3(){
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          try{
          List<Book>list=
          qr.query("select*frombookwhereid=?orid=?",newBeanListHandler<Book>(Book.class),2,9);
          System.out.println(list);
          }catch(SQLExceptione){
          //TODOAuto-generatedcatchblock
          e.printStackTrace();
          }
          }
          //3.ArrayHandler適合取一條記錄把該記錄的每一列值存儲到一個數組中Object[]
          @Test
          publicvoidtestQuery3()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Object[]arr=qr.query("select*frombookwhereid=1",newArrayHandler());
          for(Objectobj:arr){
          System.out.println(obj);
          }
          }
          //4.ArrayListHandler適合取多條記錄把該記錄的每一列值存儲到一個數組中Object[]然后把數組封裝到集合中
          @Test
          publicvoidtestQuery4()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          List<Object[]>list=qr.query("select*frombook",newArrayListHandler());
          for(Object[]obj:list){
          for(Objecto:obj){
          System.out.print(o+",");
          }
          System.out.println();
          }
          }
          //5.ColumnListHandler獲取某一列的數據封裝到List集合中
          @Test
          publicvoidtestQuery5()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          List<Object>list=qr.query("select*frombook",newColumnListHandler(2));//可以根據列號從1開始/列名
          for(Objectobj:list){
          System.out.println(obj);
          }
          }
          //6.MapHandler適合取一條記錄把當前記錄的列名和列值放到一個Map中
          @Test
          publicvoidtestQuery6()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Map<String,Object>map=qr.query("select*frombookwhereid=1",newMapHandler());
          for(Map.Entry<String,Object>entry:map.entrySet()){
          System.out.println(entry.getKey()+"::"+entry.getValue());
          }
          }
          //7.KeyedHandler取多條記錄
          //每條記錄封裝到Map中再把Map封裝到另一個Map中
          //Map<key,Map<key,value>>
          //內Map:key字段名value:字段值
          //外Map:key指定字段的值value:內Map
          //key為指定的字段值
          @Test
          publicvoidtestQuery7()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Map<Object,Map<String,Object>>map=qr.query("select*frombook",newKeyedHandler("id"));
          for(Map.Entry<Object,Map<String,Object>>entry:map.entrySet()){
          System.out.println(entry.getKey());
          for(Map.Entry<String,Object>e:entry.getValue().entrySet()){
          System.out.println(e.getKey()+";;;;"+e.getValue());
          }
          System.out.println("-------------");
          }
          }
          //8.MapListHandler適合取多條記錄把當前記錄封裝到Map中再把Map封裝到List中
          @Test
          publicvoidtestQuery8()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          List<Map<String,Object>>list=qr.query("select*frombook",newMapListHandler());
          for(Map<String,Object>map:list){
          for(Stringkey:map.keySet()){
          System.out.println(key+";;;;"+map.get(key));
          }
          System.out.println("--------------");
          }
          }
          //9.ScalarHandler適合取單行單列數據
          @Test
          publicvoidtestQuery9()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Objectobj=qr.query("selectcount(*)frombook",newScalarHandler());
          System.out.println(obj);
          }
          }
          以上代碼是針對查詢,給出的對應操作。當然,我們實際工作中不只有查詢,還會涉及到一些增刪改以及批量處理的功能。這時候我們就要使用QueryRunner類中的另外兩個方法來完成了。他們分別是:
          update()用于執行insertupdatedelete
          batch()批處理可執行多條語句批量
          QueryRunnerupdate()方法的使用案例代碼
          packagecom.qf.dbutils;
          importjava.sql.SQLException;
          importorg.apache.commons.dbutils.QueryRunner;
          importorg.junit.Test;
          importcom.qf.utils.C3P0Utils;
          //update()
          publicclassDemo_Update{
          @Test
          publicvoidtestInsert01()throwsSQLException{
          //1.獲取QueryRunner對象
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Stringsql="insertintobook(name,price,num)values('html',10,12)";
          qr.update(sql);
          }
          @Test
          publicvoidtestInsert02()throwsSQLException{
          //1.獲取QueryRunner對象
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Stringsql="insertintobook(name,price,num)values(?,?,?)";
          qr.update(sql,"photoshop",23,6);
          }
          @Test
          publicvoidtestUpdate(){
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Stringsql="updatebooksetprice=?whereid=1";
          try{
          qr.update(sql,80);
          }catch(SQLExceptione){
          //TODOAuto-generatedcatchblock
          e.printStackTrace();
          }
          }
          @Test
          publicvoidtestDelete()throwsSQLException{
          //1.獲取QueryRunner對象
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Stringsql="deletefrombookwhereid=13";
          qr.update(sql);
          }
          @Test
          publicvoidtestDelete2()throwsSQLException{
          //1.獲取QueryRunner對象
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Stringsql="deletefrombookwherenamelike?";
          qr.update(sql,"%java%");
          }
          }
          QueryRunnerbatch()方法的使用案例代碼
          packagecom.qf.dbutils;
          importjava.sql.SQLException;
          importjava.util.Arrays;
          importorg.apache.commons.dbutils.QueryRunner;
          importorg.junit.Test;
          importcom.qf.utils.C3P0Utils;
          publicclassDemo_Batch{
          /*
          *batch()方法是批量處理
          *所需要的參數包括一個二維數組
          *Object[][]params=newObject[5][];高維的數5決定是執行sql語句的次數
          *低維數組的元素就是給sql語句?賦值的
          **/
          @Test
          publicvoidtestBatchInsert()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          //batch方法第二個參數是一個二維數組所以我們先創建一個二維數組
          Object[][]params=newObject[5][];
          //給二維數組中每一個一維數組的元素進行賦值
          for(inti=0;i<params.length;i++){
          params[i]=newObject[]{"html",22,39};
          }
          int[]arr=qr.batch("insertintobook(name,price,num)values(?,?,?)",params);
          System.out.println(Arrays.toString(arr));
          }
          @Test
          publicvoidtestBatchDelete()throwsSQLException{
          QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
          Object[][]params=newObject[3][];
          for(inti=0;i<params.length;i++){
          params[i]=newObject[]{i};
          }
          qr.batch("deletefrombookwhereid=?",params);
          }
          }


        以上就是關于扣丁學堂java在線學習之ResultSetHandler常用結果集封裝的詳細介紹,希望對小伙伴們有所幫助,想要了解更多內容的小伙伴可以登錄扣丁學堂官網查詢。扣丁學堂是專業的Java培訓機構,不僅有專業的老師和與時俱進的課程體系,還有大量的Java視頻教程供學員掛看學習哦。扣丁學堂java技術交流群:487098661。微信號:codingbb

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: Java視頻

        技術專區

        關閉
        主站蜘蛛池模板: 喜德县| 麦盖提县| 吴江市| 阳高县| 彰化市| 北流市| 二连浩特市| 明水县| 平湖市| 古蔺县| 武胜县| 色达县| 镶黄旗| 永济市| 鞍山市| 诸暨市| 沙河市| 凤山市| 祁连县| 自治县| 云阳县| 吉安市| 东海县| 波密县| 宜丰县| 土默特左旗| 大石桥市| 科尔| 讷河市| 淳化县| 南丹县| 华池县| 瑞安市| 毕节市| 万荣县| 康平县| 海兴县| 濉溪县| 五莲县| 团风县| 连州市|