第1章
resultType和resultMap的區別是什麼?
MyBatis中在查詢進行select映射的時候,返回類型能夠用resultType,也能夠用resultMap,resultType是直接表示返回類型的(對應着咱們的model對象中的實體),而resultMap則是對外部ResultMap的引用(提早定義了db和model之間的隱射key-->value關係),可是resultType跟resultMap不能同時存在。
在MyBatis進行查詢映射時,其實查詢出來的每個屬性都是放在一個對應的Map裏面的,其中鍵是屬性名,值則是其對應的值。
①當提供的返回類型屬性是resultType時,MyBatis會將Map裏面的鍵值對取出賦給resultType所指定的對象對應的屬性。因此其實MyBatis的每個查詢映射的返回類型都是ResultMap,只是當提供的返回類型屬性是resultType的時候,MyBatis對自動的給把對應的值賦給resultType所指定對象的屬性。
②當提供的返回類型是resultMap時,由於Map不能很好表示領域模型,就須要本身再進一步的把它轉化爲對應的對象,這經常在複雜查詢中頗有做用。
MyBatis傳參的幾種方式?
一、 按照序列入參
二、 第二種:基本數據類型(parameterType="xxx")(接口方法聲明參數中可以使用註解@param(「xx」),一個參數時能夠不用加@param,多個參數是就要用@param了。)
三、 JAVA實體類
四、 Map
n mapper元素的namespace屬性的做用是什麼?
在mybatis中,映射文件中的namespace是用於綁定Dao接口的,即面向接口編程。
當你的namespace綁定接口後,你能夠不用寫接口實現類,mybatis會經過該綁定自動幫你找到對應要執行的SQL語句
談談你對association和collection元素的理解
Association映射到javabean的某個複雜數據類型,好比javabean類,即javabean內部嵌套一個複雜數據類型屬性這種狀況屬於複雜類型的關聯,但association僅處理一對一的關聯關係
Collection和association的做用差很少,只是映射的屬性是個集合列表,是javabean內部嵌套的一個複雜數據類型(集合)屬性
n 實現動態SQL的主要元素有哪些?
If:簡單的條件查詢
Choose:至關於java中的switch語句一般和when和otherwise搭配
Where:簡化SQL語句中的where條件判斷
Set:解決動態更新語句
Trim:能夠去除靈活的關鍵字
Foreach:迭代一個集合一般與in連用
什麼是數據持久化?
是程序數據在瞬時狀態和持久狀態間轉換的過程
簡述SqlSessionFactoryBuild
負責構建SqlSessionFactory,並提供多個build方法的重載
SqlSessionFactoryBuilder SqlSessionFactory、SqlSession的生命週期和做用域
SqlSessionFactorBuildr用過即丟,最佳範圍存在方法體內,也就是局部變量而已。
SqlSessionFactory對象一旦建立,就會在整個應用運行期間始終存在它的生命週期和應用同存在
SqlSession對應一次數據庫會話
Spring兩大核心技術?
SpringIOC(控制反轉/依賴注入)
SpringAOP(面向切面編程)
如何理解SpringIOC?
SpringIOC即控制反轉/依賴注入,是面向對象編程中的一種設計理念,用來下降程序之間的耦合度
如何理解SpringAOP ?
SpringAop即面向切面編程,是面向對象編程的擴展,通常適用於具備橫切邏輯的場合,如控制事物,事物管理、性能檢測,SpringAOP簡單來講就是在不改變原有代碼的狀況下增長新功能
Spring有哪些優勢?
低侵入式設計
獨立於各類應用服務器
依賴注入特性將組件關係透明化,下降耦合度
通用任務集中處理
與第三方框架的良好整和
第2章
如何經過屬性文件配置數據源?
使用Spring提供的PropertyPlaceholderConfigurer類加載屬性文件,在Spring配置文件中採用${ ……}的方式引用屬性文件中的鍵值對
如何加載JNDI數據源?
Spring提供引用JNDI資源的JndiObjectFactoryBean類來調用
簡述Bean的做用域有幾種?
一、 singleton,單例模式,bean的實例只有一個
二、 protopyte,每次容器獲取bean時,都會建立一個新的實例
三、 request,用於web應用環境,針對每次的http請求都會建立一個實例
四、 session,同一個會話共享一個實例,不一樣的會話使用不一樣的實例
五、 global,僅在Porplet的web環境中使用,同一個全局會話共享一個實例。對於非Porplet環境等同於session
簡述自動裝配都有幾種類型?
ByName byType constructor
列舉獲取映射接口實例,實現數據操做的幾中方式:
一、 使用MapperFactoryBean注入映射器
二、 使用MapperScannerConfigurer注入映射器
簡述聲明事務配置的步驟:
n 配置步驟
u 導入tx和aop命名空間
u 定義事務管理器Bean,併爲其注入數據源Bean
u 經過<tx:advice>配置事務加強,綁定事務管理器並針對不一樣方法定義事務規則
u 配置切面,將事務加強與方法切入點組
第3章
什麼是SpringMVC設計模式
數據訪問接口:Dao層
處理業務邏輯層:Service層
數據實體層:Pojo
負責訪問前端請求和處理:Servlet
負責前段頁面展現:jsp
M:Model即數據模型—java
V:view即視圖—jsp
C:controllor即控制器—Servlet
簡述SpringMVC的請求流程:
當用戶發送URL請求時,web.xml中的DispatcherServlet會截獲請求,根據HandlerMappering找到對應的Controller來處理請求,Controller處理完成後,返回ModelAndView對象,該對象告訴DispatcherServlet須要經過哪一個視圖來進行數據模型展現,最後Dispatcher Servlet根據視圖解析器把Controller返回的邏輯視圖轉換成view返回給用戶界面
什麼是單例模式?
系統運行期間,只有一個實例
具體來講有一下三個關鍵點:
一、 一個類只有一個實例
二、 它必須自行建立這個實例
三、 它必須自行向整個系統提供這個實例
SpringMVC如何處理多文件上傳?
一、 表單頁面加上file標籤
二、 單獨入參,控制器處理
SpringMVC中服務器端的數據如何實現驗證的?
一、 利用Spring自帶的驗證框架
二、 利用JSR303實現(java爲bean數據合法性檢驗所提供得標準框架,SpringMVC支持JSR303標準得校驗框架 JSR303經過在bean屬性上標註相似於0)
簡述REST風格
表述性狀態轉移,是一種軟件架構風格,即便用URL表示資源時,每一個資源都用一個獨一無二的URL來表示,並使用HTTP方法白送和i操做,即準確的描述服務器對資源的處理動做(GET、POST、PUT、DELETE),並實現資源得增刪改查
@PathVariable得用法:
接受REST風格URL中得參數
@ResponseBody註解的用法?
該註解的做用是將標註該註解的處理方法的返回結果直接寫入HTTP ResponseBody中,通常狀況下該註解都會在異常處理數據時使用,被其標註的處理方法返回的數據將會輸出到響應流中,客戶端獲取並顯示數據
SpringMVC中輸出json數據時,對於日期格式應該如何處理?
一、 註解方式:@JSONField(format= 「yyyy-MM-dd」)
二、 配置FastJson的消息轉換器-FastJsonHttpMessageConverter
設置features屬性:指定輸出時的日期轉換器爲WriteDateUseDateFormat
ContentNegotiatingViewResolver 視圖解析器的應用理解?
能夠根據請求所要求的MIME類型決定由哪一個視圖解析器負責處理,它容許以一樣的內容數據來呈現不一樣的View
第4章
簡述SSM框架整合的步驟?
一、 建項目導jar包
二、 配置web.xml中的SpringMVC的核心控制器DispatcherServlet
三、 配置applicationContext-Mybatis.xml Spring配置文件 database.properties log4j.propertise mybatis-config.xml Springmvc-servlet.xml
四、 事務管理配置SqlSessionFactoryBean MapperScannerConfiguer
五、 對象數據模型pojo
六、 數據訪問接口Dao
七、 系統服務接口 sevices
八、 前端控制層controller
九、 Tools工具類
十、 前端頁面jsp和靜態資源statics
面向過程編程,面向對象編程和麪向切面編程理解
面向過程(ProcedureOriented)是一種以過程爲中心的編程思想。這些都是以什麼正在發生爲主要目標進行編程,不一樣於面向對象的是誰在受影響。與面向對象明顯的不一樣就是封裝、繼承、類。
面向對象編程(ObjectOriented Programming,OOP,面向對象程序設計)是一種計算機編程架構。OOP 的一條基本原則是計算機程序是由單個可以起到子程序做用的單元或對象組合而成。OOP 達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。爲了實現總體運算,每一個對象都可以接收信息、處理數據和向其它對象發送信息。
面向切面編程(AspectOriented Programming(AOP)),是一個比較熱門的話題。AOP主要實現的目的是針對業務處理過程當中的切面進行提取,它所面對的是處理過程當中的某個步驟或階段,以得到邏輯過程當中各部分之間低耦合性的隔離效果。
怎麼理解SpringAOP?
SpringAOP是一種經過預編譯和運行期間動態實現代理的方式實現了不修改代碼的狀況下給程序動態添加新功能的技術。
SpringAOP加強處理類型有哪些?
前置加強 (org.springframework.aop.BeforeAdvice) 表示在目標方法執行前來實施加強
後置加強 (org.springframework.aop.AfterReturningAdvice) 表示在目標方法執行後來實施加強
環繞加強 (org.aopalliance.intercept.MethodInterceptor) 表示在目標方法執行先後同時實施加強
異常拋出加強 (org.springframework.aop.ThrowsAdvice) 表示在目標方法拋出異常後來實施加強
引介加強 (org.springframework.aop.introductioninterceptor) 表示在目標類中添加一些新的方法和屬性
IoC 主要的實現形式有兩種 :
依賴查找:容器提供回調接口和上下文環境給組件。 EJB 和 Apache Avalon 都是使用這種方式。
依賴注入:組件不作定位查詢,只是提供普通的 Java 方法讓容器去決定依賴關係。容器全權負責組件的裝配,它會把符合依賴關係的對象經過 JavaBean 屬性或者構造子傳遞給須要的對象。經過 JavaBean 屬性注射依賴關係的作法稱爲設值方法注入( Setter Injection );將依賴關係做爲構造子參數傳入的作法稱爲構造子注入( Constructor Injection )。
2.2 AOP在Spring中的實現
基於AOP,業界存在各類各樣的AOP實現,好比,JBoss AOP、Spring AOP、ASP ectJ、 Aspect Werkz等。各自實現的功能也不同。AOP實現的強弱在很大程度上取決於鏈接點模型。目前,Spring只支持方法級的鏈接點。這和一些其餘AOP框架不同,如AspectJ和JBoss,它們還提供了屬性接入點,這樣能夠防止你建立特別細緻的通知,如對更新對象屬性值進行攔截。然而,因爲 Spring關注於提供一個實現J2EE 服務的框架,因此方法攔截能夠知足大部分要求,並且Spring的觀點是屬性攔截破壞了封裝,讓Advice觸發在屬性值改變而不是方法調用上無疑是破壞了這個概念。0
一、添加jar包
二、編寫前置加強、後置加強等
三、編寫spring配置文件applicantionContent.xml
四、編寫代碼,獲取加強處理的對象
Spring的AOP框架的關鍵點以下:
(1)Spring實現了AOP聯盟接口。在SpringAOP中,存在以下幾種通知(Advice)類型
Before通知:在目標方法被調用前調用,涉及接口org.springFramework .aop.MethodBeforeAdvice;
After通知:在目標方法被調用後調用,涉及接口爲org.springframework.aop.AfterReturningAdvice;
Throws通知:目標方法拋出異常時調用,涉及接口org.springframework.aop.MethodBeforeAdvice;
Around通知:攔截對目標對象方法調用,涉及接口爲org.aopalliance.intercept.MethodInterceptor。
(2)用Java編寫Spring通知,並在Spring的配置文件中,定義在什麼地方應用通知的切入點。
(3)Spring的運行時通知對象。代理Bean只有在第一次被應用系統須要的時候才被建立。若是你使用的是ApplicationContext,代理對象在BeanFactory載入全部Bean的時候被建立。Spring有兩種代理建立方式。若是目標對象實現了一個或多個接口暴露的方法,Spring將使用JDK 的 java.lang.reflect.Proxy類建立代理。這個類讓Spring動態產生一個新的類,它實現所需的接口,織入了通知,而且代理對目標對象的全部請求。若是目標對象沒有實現任何接口,Spring使用CGLIB庫生成目標對象的子類。在建立這個子類的時候,Spring將通知織入,而且將對目標對象的調用委託給這個子類。此時,須要將Spring發行包lib/cglib目錄下的JAR文件發佈到應用系統中。
2.3Spring AOP的優點
藉助於SpringAOP,SpringIoC可以很方便的使用到很是健壯、靈活的企業級服務,是由於Spring AOP可以提供以下幾方面的優點:
(1)容許開發者使用聲明式企業服務,好比事務服務、安全性服務;EJB 開發者都知道,EJB組件可以使用J2EE容器提供的聲明式服務,可是這些服務要藉助於EJB容器,而Spring AOP卻不須要EJB容器,藉助於Spring的事務抽象框架就能夠這些服務。
(2)開發者能夠開發知足業務需求的自定義切面;
(3)開發SpringAOP Advice很方便。由於這些AOP Advice僅是POJO類,藉助於Spring提供的ProxyFactoryBean,可以快速的搭建Spring AOP Advice。