(相關面試題! 供參考!)
1.ORM框架有哪些?
MyBatis:半自動化框架(不是純ORM) 需要寫動態SQL語句,實體類和SQL語句之間建立對映關係
Spring:輕量級框架, Java EE的春天,當前主流框架(低耦合 高內聚)
解釋ORM : (Object Relational Mapping):表示物件 關係 對映:
- 編寫程式的時候,以面向物件的方式處理資料
- 儲存資料的時候,以關係型資料庫的方式儲存
2. MyBatis和Spring的優點 分別是什麼?
MyBatis:SQL語句封裝在配置檔案中,便於統一管理和維護,降低程式的耦合度
瞭解底層封裝過程
方便程式程式碼除錯
Spring: 低侵入式設計
獨立於各種應用伺服器
依賴注入特性將元件關係透明化,降低了耦合度
面向切面程式設計特性允許將通用任務進行集中式處理
與第三方框架的良好整合 粘合劑
! !! Spring也是輕量級框架,站式框架, 可以提供對持久層的支援, 提供Web MVC框架
3. MyBatis的核心物件有哪些?
SqlSessionFactoryBuilder:
(1.)用過即丟,其生命週期只存在於方法體內
(2.)可重用其來建立多個 SqlSessionFactory 例項
(3.)負責構建SqlSessionFactory,並提供多個build方法的過載---
SqlSessionFactory
(1.)SqlSessionFactory是每個MyBatis應用的核心
(2.)作用:建立SqlSession例項
(3.)作用域:Application 全域性作用域
(4.)生命週期與應用的生命週期相同
SqlSession
(1.)包含了執行SQL所需的所有方法
(2.)對應一次資料庫會話,會話結束必須關閉
(3.)執行緒級別,不能共享
(4.)一個request請求相同
4.如何搭建Mybatis?
1.匯入jar包
2.核心配置檔案:configuration.xml
3.建立實體類
4.dao層+SQL對映檔案-mapper.xml
5.建立測試類:
讀取核心檔案:mybatis-config.xml
建立SqlSessionFactory物件。讀取配置檔案
建立SqlSession物件
呼叫mapper檔案進行資料操作
5.MyBatis框架和JDBC相比的優點:
優點 :
與JDBC相比,減少百分之50的程式碼量
最簡單的持久化框架,小巧並簡單易學
SQL程式碼從程式程式碼中徹底分離,可重用
提供XML標籤 支援編寫動態SQL
提供對映標籤,支援物件與資料庫的ORM欄位對映
缺點 :
SQL語句編寫工作量大,對其人員有一定要求
資料庫移植性差.
6.resultType和resultMap的區別是什麼?
- resultType是直接表示返回型別 ,基本資料和複雜資料型別
- resultmap是對外部resultMap的引用 ,資料庫欄位資訊和實體類物件屬性不一致,複雜的聯合查詢,自由控制對映結果
注意!! 二者不能同時存在,本質上都是Map資料結構
7.IOC AOP?談談你對它們的理解、
IOC(Inversion of Control):是一種設計思想 —元件化思想,英文翻譯過來就是控制反轉—將控制權(建立物件和物件之間的依賴關係的權利)交給spring容器。
- 控制反轉(Inversion of Control):名詞,指代內部轉外部,將元件物件的控制權從程式碼本身轉移到外部容器
- 依賴注入(Dependency Injection):操作,在內部拿資料,將元件的構建和使用分開
- 元件化思想:分離關注點,使用介面,不再關注實現
補充!!!
- 輕量級IOC容器:Pico Container、Avalon、Spring、HiveMind等。
- 超重量級IOC容器:EJB。
- 半輕半重IOC容器:JBoss,Jdon等。
AOP (Aspect Oriented Programming):
所謂面向切面程式設計,是一種通過預編譯和執行期動態代理的方式實現在不修改原始碼的情況下給程式動態新增功能的技術
面向切面.
面向切面.
簡單來說就是拿回來拼回去的操作;將程式邏輯相對獨立的功能抽取出來(去掉也不影響),利用spring的配置檔案將這些功能插進去,提高了程式碼的複用性.
8.為什麼要使用IOC AOP 有什麼優點?
- IOC:解 耦 合—實現元件之間的解耦,實現每個元件時只關注元件內部的事情 ,提高程式的靈活性和可維護性
- AOP:專心做事,作用主要是改變了OOP(Object Oriented Programming)面向物件程式設計的不足。
9. MyBatis,增刪改查個使用什麼標籤,有什麼屬性?
- 查<select id= “介面中的方法名” resultType="返回值型別/完全限定名" parameterType="傳入SQL語句的引數型別/完全限定名"></select>
- 刪<delect id= “介面中的方法名” parameterType=“傳入SQL語句的引數型別/完全限定名” ></delect>
- 改<update id= “介面中的方法名” parameterType="傳入SQL語句的引數型別/完全限定名 “></update>
- 增<insert id= “介面中的方法名” parameterType=“傳入SQL語句的引數型別/完全限定名 ”></insert>
!!屬性:resultType,parameterType
!!傳入SQL語句的引數型別可以是:
基礎資料型別:int,String,Date 只能傳一個,通過 #{引數名} 獲取
複雜資料型別:Java實體類,Map等 可通過 屬性名或 #{Map的keyName}獲取
10. Ajax的屬性:
- url “傳送請求地址”
- type “請求方式”
- data “傳送伺服器的資料”
- dataType “預期伺服器返回的資料型別”
- success “成功呼叫的”
- error “請求失敗呼叫的”