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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

反射之动态拼接sql字符串「建议收藏」

發(fā)布時(shí)間:2023/12/19 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 反射之动态拼接sql字符串「建议收藏」 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

反射之動(dòng)態(tài)拼接sql字符串的實(shí)現(xiàn)

前言

自己在學(xué)習(xí)JDBC連接數(shù)據(jù)庫,不用框架手動(dòng)實(shí)現(xiàn)時(shí),個(gè)人覺得反射動(dòng)態(tài)拼接sql的思想很好,當(dāng)然了大家伙覺得好才是真的好(廣州好迪,手動(dòng)狗頭),所以才有了本文對(duì)該知識(shí)點(diǎn)梳理與總結(jié)。分享給大家,下面開始步入文章的正文,親們不要掉隊(duì)。
(噓~看這里:使用的開發(fā)工具是IDEA哦)

正文

首先帶領(lǐng)大家理解一下我的思路,遙想當(dāng)時(shí)我想了幾個(gè)小時(shí)不知如何下手,無所事事敲鍵盤,未曾想用最簡(jiǎn)單的方式反而有了結(jié)果。

具體實(shí)現(xiàn)步驟

  • JDBC連接數(shù)據(jù)庫
  • 根據(jù)數(shù)據(jù)庫表中字段創(chuàng)建實(shí)體類

親們,上面這兩步我就不說了,不是本文的重點(diǎn)不做說明,有時(shí)間會(huì)總結(jié)JDBC連接數(shù)據(jù)庫。

  • 如何實(shí)現(xiàn)動(dòng)態(tài)sql語句的拼接
    重點(diǎn)來了搬好小板凳坐好!

小小腦袋講故事給大家聽

我是小朋友望舒,在很久很久以前,我的夢(mèng)想是實(shí)現(xiàn)動(dòng)態(tài)拼接sql,既然動(dòng)態(tài)拼接,我就要有東西來存放它,那就整兩條String(字符串)(不妨給他們起名sqlSentence,sqlResult)把他們拼接成sql來展現(xiàn)我拼接后的字符串。不用多久,我就會(huì)升職加薪、當(dāng)上總經(jīng)理、出任CEO、迎娶白富美、走上人生巔峰,想想還有點(diǎn)小激動(dòng)…)

公式 sql = sqlSentence + sqlResult

         String sqlSentence = "";
         String sqlResult = "";

Jetbrains全家桶1年46,售后保障穩(wěn)定

接下來就是反射原理地實(shí)現(xiàn)了(不得不說反射真的很強(qiáng)大),從反射的百寶箱里面找到了兩個(gè)工具:getClass()[獲得類]、getSimpleName()[獲得類的名字],拿著他倆去我家后院一頓操作:

        Class<?> aClass = webpage.getClass();
        String table = aClass.getSimpleName();

我發(fā)現(xiàn)了后院(數(shù)據(jù)庫中的)里的神奇寶物(webpage表,實(shí)際就是實(shí)體類?。?把他們sout(懂得都懂,不懂得問我)一下就是這個(gè)東東

隱隱約約看見寶物上印著一幅畫~~ 喏,就是這個(gè)(毫無保留展示給親們)

差點(diǎn)以為自己的夢(mèng)想實(shí)現(xiàn)了,卻發(fā)現(xiàn)自己要找的東西還沒有出現(xiàn)。于是我又拿出了百寶箱的另外兩件工具getDeclaredFields()[獲得某個(gè)屬性對(duì)象]、getName()[獲得類的完整路徑名字];用它們探索寶物的奧秘!

Field[] fields = aClass.getDeclaredFields();
            String s1 = "";
            String v1 = "";
            for (Field f : fields) { 
   
                f.setAccessible(true);
                if (f.get(webpage)==null){ 
   
                    return;
                }else{ 
   
                    sqlSentence = sqlSentence + f.getName() + ",";
                    f.setAccessible(true);
                    sqlResult = sqlResult + "'" + f.get(webpage) + "'" + ",";
               }
            }

(這里我解釋一下:上面幾行代碼原理很簡(jiǎn)單,如果字段不為空就通過反射拿到實(shí)體類屬性,換句話說就是拿到數(shù)據(jù)庫表中字段,然后用foreach循環(huán)遍歷出來,并用單引號(hào)” ’ “和” , “隔開就達(dá)到了下面這樣的效果)

我拿出我的✂[substring()方法]把后面多余的逗號(hào)剪掉就會(huì)更好看一點(diǎn),給我的✂亮個(gè)相,不要嫌它丑

            sqlSentence = sqlSentence .substring(0, s1.length() - 1);
            sqlResult = sqlResult .substring(0, v1.length() - 1);

我在院子里跑累了,就打算躺下來休息休息,隨手把它們(sqlSentence,sqlResult)放在了床邊,我就昏昏欲睡了。。。。。。
不知睡了多久,剎那間一道強(qiáng)光閃現(xiàn),我揉了揉睡眼惺忪的眼睛— —沒錯(cuò) 寶物合二為一了!夢(mèng)想實(shí)現(xiàn)了??!(幸福來得太突然,一時(shí)間竟不知所措)

            String sql = "insert into " + table + "(" + sqlSentence + ") values (" + sqlResult + ")";
            System.out.println(sql);

打印在控制臺(tái)如下


自此,有了這件寶物望舒過上了愉快幸福的996生活~~~
完結(jié)!撒花?。。?/p>

結(jié)語

故事講完了,第一次嘗試著用這種方式來描述問題,還請(qǐng)大家多多指正。
我是望舒,Salute?。?!

總結(jié)

以上是生活随笔為你收集整理的反射之动态拼接sql字符串「建议收藏」的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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