色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

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

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

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

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

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

          //ColumnListHandler:取某一列的數(shù)據(jù)。封裝到List中。

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

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

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

          //ScalarHandler:適合取單行單列數(shù)據(jù)

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

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

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

          案例代碼

          1.MySQL數(shù)據(jù)庫創(chuàng)建圖書信息表

          2.創(chuàng)建Book.javajavabean類-->略

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

          4.根據(jù)需求,使用指定的結果集獲取數(shù)據(jù)結果


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

            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適合取一條記錄把該記錄的每一列值存儲到一個數(shù)組中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適合取多條記錄把該記錄的每一列值存儲到一個數(shù)組中Object[]然后把數(shù)組封裝到集合中
            @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獲取某一列的數(shù)據(jù)封裝到List集合中
            @Test
            publicvoidtestQuery5()throwsSQLException{
            QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
            List<Object>list=qr.query("select*frombook",newColumnListHandler(2));//可以根據(jù)列號從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適合取單行單列數(shù)據(jù)
            @Test
            publicvoidtestQuery9()throwsSQLException{
            QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
            Objectobj=qr.query("selectcount(*)frombook",newScalarHandler());
            System.out.println(obj);
            }
            }
            以上代碼是針對查詢,給出的對應操作。當然,我們實際工作中不只有查詢,還會涉及到一些增刪改以及批量處理的功能。這時候我們就要使用QueryRunner類中的另外兩個方法來完成了。他們分別是:
            update()用于執(zhí)行insertupdatedelete
            batch()批處理可執(zhí)行多條語句批量
            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()方法是批量處理
            *所需要的參數(shù)包括一個二維數(shù)組
            *Object[][]params=newObject[5][];高維的數(shù)5決定是執(zhí)行sql語句的次數(shù)
            *低維數(shù)組的元素就是給sql語句?賦值的
            **/
            @Test
            publicvoidtestBatchInsert()throwsSQLException{
            QueryRunnerqr=newQueryRunner(C3P0Utils.getDataSource());
            //batch方法第二個參數(shù)是一個二維數(shù)組所以我們先創(chuàng)建一個二維數(shù)組
            Object[][]params=newObject[5][];
            //給二維數(shù)組中每一個一維數(shù)組的元素進行賦值
            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常用結果集封裝的詳細介紹,希望對小伙伴們有所幫助,想要了解更多內容的小伙伴可以登錄扣丁學堂官網查詢??鄱W堂是專業(yè)的Java培訓機構,不僅有專業(yè)的老師和與時俱進的課程體系,還有大量的Java視頻教程供學員掛看學習哦??鄱W堂java技術交流群:487098661。微信號:codingbb

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



          關鍵詞: Java視頻

          技術專區(qū)

          關閉