借助互聯網更有效的滿足顧客的需求和願望,實現企業營銷目的

With the help of the Internet, we can more effectively meet the needs and aspirations of customers, and achieve the purpose of enterprise marketing

Java經(jīng)典面(miàn)試題整理及答案詳解


學(xué)習Java建議還(hái)是多動手練習,很多時候你會(huì)發(fā)現想的和寫出來運行的不是一回事(shì)兒,本節内容大家可以根據題目自己練習看看~
 
1.使用MyBatis做模糊查詢的時候,在日志中看到執行了sql語句,但是查詢不到結果。
面(miàn)對(duì)這(zhè)樣(yàng)的問題,如果可以看到後(hòu)台的日志出現有相關的信息顯示,那麼(me)就表示現在的整體環境搭建是沒(méi)有任何問題的,但是爲什麼(me)數據沒(méi)有呢?
個人經(jīng)驗總結有如下幾點:
(1) 你的數據庫裡(lǐ)沒(méi)有符合條件的數據,觀察你的事(shì)務問題,更換一個新的客戶端連接;
(2) 你在使用模糊查詢的時候,所傳遞的參數可能(néng)就有問題,這(zhè)個時候最好(hǎo)的解決方案,就是觀察數據層裡(lǐ)面(miàn)傳入的内容是否正确;
(3) 在使用模糊查詢的時候千萬要記住在關鍵字的左右增加一個“%”,如果沒(méi)有加,那麼(me)就不叫(jiào)模糊查詢了;
(4) 你現在所連接的數據庫并不是你真正的數據庫。
2.在MyBatis的sql語句中使用if判斷傳遞過(guò)來的某參數是不是null是有效的,但是卻不能(néng)判斷空字符串。
動态SQL是依靠配置實現的,它隻能(néng)夠判斷null。你可以在業務層的處理上追加一些判斷功能(néng),例如:如果發(fā)現有内容爲空字符串( ’’’’),那麼(me)你就爲其設置null。
動态SQL很有幫助。
3.MyBatis和Hibernate中的set方法
MyBatis開(kāi)發(fā)裡(lǐ)面(miàn)主要的核心是要求用戶自己來定義使用的SQL語句。而Hibernate特點由于其要考慮其可移植性的問題,所以在Hibernate處理之中,它所需要考慮的就是一個自動生成(chéng)SQL問題。
現在所有問題都(dōu)放在了POJO類(VO)、Hibernate下,如果該POJO類的對(duì)象處于持久态狀态,那麼(me)每一次調用setter方法都(dōu)會(huì)更新數據(如果你的事(shì)務是手工控制,則在若幹個setter調用後(hòu)才會(huì)發(fā)出更新操作),而MyBatis沒(méi)有這(zhè)樣(yàng)的功能(néng),因爲Hibernate之中搞的這(zhè)種(zhǒng)對(duì)象的狀态設計有些糟糕,而且這(zhè)也是Hibernate本身性能(néng)低的原因。追究其起(qǐ)源,主要是因爲傳統的EJB(EntityBean)影響。
4.Resource與Autowired區别
在使用Spring的自動的Annotation注解的時候經(jīng)常會(huì)見到兩(liǎng)類的注解:@Resource(個人常用)、@Autowired ,如果你想要了解這(zhè)兩(liǎng)個的區别,最好(hǎo)的做法是先認真學(xué)完了spring依賴注入的時候講解過(guò)的自動配置操作,在spring裡(lǐ)面(miàn)自動配置的模式有兩(liǎng)類:按照類型、按照名稱。
@Autowired:則表示按照類型進(jìn)行自動注入,缺點是如果類型相同,則無法注入;
@Resource:具備按照類型自動注入的特點,而後(hòu)如果現在類型相同,則可以設置一個名稱,也就是說你使用@Component、@Service等注解設置自動掃描的時候可以設置一個名字,而這(zhè)個名字就可在@Resource中使用了;
SpringBoot裡(lǐ)面(miàn),因爲其自動支持一些環境配置,如果使用的是Autowired,那麼(me)配置多個相同類型的Bean的話,將(jiāng)無法進(jìn)行準确的注入操作。必須使用@Resource完成(chéng)。
5.Hibernate控制反轉
現在所說的是Hibernate中針對(duì)關系的配置處理,控制反轉就是把控制權交給了對(duì)方,這(zhè)種(zhǒng)情況一般出現在數據的級聯關系配置上:一對(duì)多、多對(duì)多。
以一個程序的分析爲例:一個人有多本書,在Hibernate的世界裡(lǐ)充滿了神奇,它可以自動將(jiāng)沒(méi)有的數據進(jìn)行增加處理。正常的流程,首先要有一個人,這(zhè)個人會(huì)有一個編号,在進(jìn)行書的信息添加的時候就需要把這(zhè)個人的編号一起(qǐ)保存進(jìn)去。
如果不配置控制反轉,它的處理:
——增加人的信息;
——增加所有書的信息,但此時人的保存的關聯字段内容是null;
——再更新所有書的信息,將(jiāng)人的關系的内容保存進(jìn)來。
正常的流程(控制反轉,將(jiāng)子表與父表關聯字段的使用控制權交給子表自己控制)是:
——保存人的信息,同時取得人的編号,將(jiāng)這(zhè)些編号設置到書的内容裡(lǐ)面(miàn);
——保存書的信息
copyright © 丹陽微淘信息技術有限公司 版權所有