java自定义封装一个方法_Java自定义套件封装教程
Java自定義套件封裝教程
時間:2017-07-28?????來源:華清遠見JAVA學(xué)院
各位親愛的小伙伴們大家好,近很多伙伴都問我該怎么做Java自定義套件封裝,今天華清Java學(xué)院小編在這里做了一個教程分享給大家。
java開發(fā)人員現(xiàn)在對數(shù)據(jù)庫的操作一般會用到諸如像Hibernate,Mybatis,SpringJdbcTemplate等ORM組件,但是這些組件是怎樣從原始的編碼方式一步步封裝過來的呢 ?
一、原始的編碼方式
如下圖所示: 我在05年剛畢業(yè)的時候,曾經(jīng)是這樣寫Jdbc訪問數(shù)據(jù)庫的.
二、封裝的過程和思路
總得來說,Java組件封裝的原則就是高內(nèi)聚,低耦合,直白一點的解釋就是將重復(fù)性的代碼提取出去作為工具類,盡量減少類與類之間的固定依賴。
1) DbUtil工具類
通過查看原始編碼方式的代碼 ,我們可以看出,獲取數(shù)據(jù)庫的連接和關(guān)閉數(shù)據(jù)庫連接的代碼,在每一次操作中都需要,所以我們可以思考一下,將這部分代碼提取出去.
* 新建DbUtil工具類 ,用于數(shù)據(jù)庫的開連接和關(guān)連接
通過工具類的封裝,我們可以繼續(xù)在工具類里面將數(shù)據(jù)庫的信息通過配置文件加載,以及啟用流行的連接池技術(shù),在這里不在贅述.
2) 增刪改方法的封裝
在封裝了DbUtil工具類的基礎(chǔ)上,我們試著做一個單表的增刪改查,請看以下代碼:
進一步觀察增刪改方法 ,除了Sql語句和參數(shù)傳入的不同,其他代碼其實也是重復(fù)的,我們是否可以考慮將這些公用的代碼也提取出去呢?
偉大的Java程序員們都是”懶鬼”,一切都是為了少些一些重復(fù)的代碼以提高工作效率.
我們可以新建一個模板類JdbcTemplate, 對增刪改方法進行封裝,外部只需要傳入sql語句和sql語句需要用到的參數(shù).
通過上面步驟的封裝,我們再來看看讓對單表增刪改的操作是如何方便簡單的,新建一個單表增刪改的測試類,繼承我們封裝的模板類,代碼如下:
回過頭看看我們的封裝過程和代碼,是不是對于開發(fā)人員來講 ,越來越簡單,代碼寫的越來越少,這就是Java在實際開發(fā)過程中需要用到大量前輩們封裝的組件的原因.
3) 查詢方法的封裝
在增刪改方法的封裝過程當中,我們發(fā)現(xiàn),增刪改的操作,方法的返回值是固定的,但是查詢方法的返回值是不固定的,查詢不同的表,返回的是不同對象,也有可能是返回的其他類型的值.
通過以上分析,我們封裝查詢方法的時候,只能返回一個固定格式的對象或者列表,讓執(zhí)行查詢的人來解析固定格式的結(jié)果得到自己想要的返回值.
兩種方式:
a:返回一個List結(jié)構(gòu)
在JdbcTemplate模板類面新加查詢模板方法
這種封裝方式在執(zhí)行查詢時候,獲取的結(jié)果是List>結(jié)構(gòu)的值,需要自己再進行轉(zhuǎn)化,但是對于查詢來說,就非常的簡單了。
在UserDaoTemplateTest類里面新加查詢方法
b:返回一個接口的匿名內(nèi)部類
這種方式,封裝起來稍微復(fù)雜一些,但是對于查詢方來說,就可以直接在查詢方法里面獲取自己想要的對象,返回List,
非常簡單。
步驟:
* 新建一個接口 RowMapper,成員是一個匿名的內(nèi)部類
* 在JdbcTemplate模板類里面新增模板查詢方法
* 查詢的時候,通過實現(xiàn)匿名的內(nèi)部類來獲取結(jié)果,直接映射到Java對象當中 ,如代碼所示,在UserDaoTemplateTest中進行查詢
終的代碼目錄結(jié)構(gòu)如下,希望對大家的學(xué)習(xí)有所幫助。
如果需要達到像Mybatis和Hibernate等組件的高度,還有很長的一段的路要走,有興趣的同學(xué)可以查看一下SpringJdbcTemplate的源碼,其中的思想是跟它不謀而合的。
三、總結(jié)
通過以上的封裝過程,我們可以了解到Java自定義套件封裝的一個基本思路,有助于大家以后在用到相關(guān)的ORM組件時,對它們有一個更深得到認識。
總結(jié)
以上是生活随笔為你收集整理的java自定义封装一个方法_Java自定义套件封装教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【GPT4】GPT4 官方报告解读
- 下一篇: 如何使用python读取excel表的某