反射之动态拼接sql字符串「建议收藏」
反射之動態(tài)拼接sql字符串的實現(xiàn)
前言
自己在學習JDBC連接數(shù)據庫,不用框架手動實現(xiàn)時,個人覺得反射動態(tài)拼接sql的思想很好,當然了大家伙覺得好才是真的好(廣州好迪,手動狗頭),所以才有了本文對該知識點梳理與總結。分享給大家,下面開始步入文章的正文,親們不要掉隊。
(噓~看這里:使用的開發(fā)工具是IDEA哦)
正文
首先帶領大家理解一下我的思路,遙想當時我想了幾個小時不知如何下手,無所事事敲鍵盤,未曾想用最簡單的方式反而有了結果。
具體實現(xiàn)步驟
- JDBC連接數(shù)據庫
- 根據數(shù)據庫表中字段創(chuàng)建實體類
親們,上面這兩步我就不說了,不是本文的重點不做說明,有時間會總結JDBC連接數(shù)據庫。
- 如何實現(xiàn)動態(tài)sql語句的拼接
重點來了搬好小板凳坐好!
小小腦袋講故事給大家聽
我是小朋友望舒,在很久很久以前,我的夢想是實現(xiàn)動態(tài)拼接sql,既然動態(tài)拼接,我就要有東西來存放它,那就整兩條String(字符串)(不妨給他們起名sqlSentence,sqlResult)把他們拼接成sql來展現(xiàn)我拼接后的字符串。不用多久,我就會升職加薪、當上總經理、出任CEO、迎娶白富美、走上人生巔峰,想想還有點小激動…)
公式 sql = sqlSentence + sqlResult
String sqlSentence = "";
String sqlResult = "";
Jetbrains全家桶1年46,售后保障穩(wěn)定
接下來就是反射原理地實現(xiàn)了(不得不說反射真的很強大),從反射的百寶箱里面找到了兩個工具:getClass()[獲得類]、getSimpleName()[獲得類的名字],拿著他倆去我家后院一頓操作:
Class<?> aClass = webpage.getClass();
String table = aClass.getSimpleName();
我發(fā)現(xiàn)了后院(數(shù)據庫中的)里的神奇寶物(webpage表,實際就是實體類!) 把他們sout(懂得都懂,不懂得問我)一下就是這個東東
隱隱約約看見寶物上印著一幅畫~~ 喏,就是這個(毫無保留展示給親們)
差點以為自己的夢想實現(xiàn)了,卻發(fā)現(xiàn)自己要找的東西還沒有出現(xiàn)。于是我又拿出了百寶箱的另外兩件工具getDeclaredFields()[獲得某個屬性對象]、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) + "'" + ",";
}
}
(這里我解釋一下:上面幾行代碼原理很簡單,如果字段不為空就通過反射拿到實體類屬性,換句話說就是拿到數(shù)據庫表中字段,然后用foreach循環(huán)遍歷出來,并用單引號” ’ “和” , “隔開就達到了下面這樣的效果)
我拿出我的✂[substring()方法]把后面多余的逗號剪掉就會更好看一點,給我的✂亮個相,不要嫌它丑
sqlSentence = sqlSentence .substring(0, s1.length() - 1);
sqlResult = sqlResult .substring(0, v1.length() - 1);
我在院子里跑累了,就打算躺下來休息休息,隨手把它們(sqlSentence,sqlResult)放在了床邊,我就昏昏欲睡了。。。。。。
不知睡了多久,剎那間一道強光閃現(xiàn),我揉了揉睡眼惺忪的眼睛— —沒錯 寶物合二為一了!夢想實現(xiàn)了!!(幸福來得太突然,一時間竟不知所措)
String sql = "insert into " + table + "(" + sqlSentence + ") values (" + sqlResult + ")";
System.out.println(sql);
打印在控制臺如下
自此,有了這件寶物望舒過上了愉快幸福的996生活~~~
完結!撒花!!!
結語
故事講完了,第一次嘗試著用這種方式來描述問題,還請大家多多指正。
我是望舒,Salute!!!
總結
以上是生活随笔為你收集整理的反射之动态拼接sql字符串「建议收藏」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 几款容易令初学者混淆的 HANA
- 下一篇: SAP HANA Express 版本的