mybatis中兩種取值方式?談談Spring框架理解?

1.mybatis中兩種取值方式?程序員

  回答:Mybatis中取值方式有幾種?各自區別是什麼? Mybatis取值方式就是說在Mapper文件中獲取service傳過來的值的方法,總共有兩種方式,經過 $ 和 # , # 是 咱們最經常使用的方式。 咱們都說Mybatis是封裝了JDBC,因此兩種方式的區別還要從JDBC上來講, # 其實是封裝了問號佔位符賦值的 方式,會使用JDBC中的PreparedStatement,變量處用?號代替,防止SQL注入。 $ 直接拼接到sql語句中,值沒有任何修飾,存在sql注入風險。 項目中 用 # 比較多,通常 # 和 $ 會配合使用。若是取值去的是字段名的時候,須要使用到 $ ,如:排序 order by ${列名} "列名" 案例: 使用#符號,如 select * from test where value=#{param} 傳入參數param=」hello」後,實際生成 select * from test where value='hello' 。 使用$符號,$表示本來的字符串,即傳什麼參數,SQL中就填入什麼。如 select * from test order by # {param} 傳入參數param=」time」後,實際生成 select * from test order by time 。spring

2.談談Spring框架理解? sql

IOC編程

  IOC:inversion of controll 控制反轉,就是將原來經過new 關鍵字建立對象的權力,交給spring由工廠建立對象。 DI:(dependcy Injection) 依賴注入,Spring工廠不只要建立對象 還維護類與類之間 類類中屬性之間依賴關係 。 IOC和DI其實是等同的概念,若是要進行區分的話,IOC和DI能夠理解爲同一個東西的不一樣角度見解,IOC 站在程序員的角度,之前建立對象是咱們本身new出來的,如今讓容器本身建立,控制權交給了容器,對於 咱們來講控制權反轉了。 DI是站在容器的角度,從Spring角度來看,用到的全部的對象都是本身建立的,而且對象在建立的時候須要 依賴的參數也是容器注入的,而這種維持對象之間依賴關係的方式就是依賴注入。 因此IOC和DI實際上都是指容器負責建立對象和維護對象之間依賴關係的這種行爲。mybatis

AOPapp

   AOP:(Aspect Oriented Programing)面向切面編程 就是經過爲項目中某些類建立動態代理對象,經過動態代理對 象解決現有項目中通用問題,例如日誌,性能記錄。AOP表明的是一個橫向的關係,程序是順序執行的,能夠簡單理解爲線性執行,自上而下,就象一條線,所 謂切面編程就是,在這條線的某一點(切點)處切開,放入另外一個程序(加強處理),這個過程就是咱們常 說的織入,而被切入處能夠用幾何常識形象的稱之爲切面。框架

 

Spring中生成代理方式幾種,分別是什麼,默認使用哪一種,如何切換生成代理方式? 性能

  回答:兩種,JDK動態代理,基於接口(默認使用的jdk)。CGLIB,基於繼承(要使用須要配置)。 配置aop true使用CGLIB產生代理對象 false 使用jdk 默認false。 JDK動態代理 由Java SDK提供,Java SDK動態代理的侷限在於,它只能爲接口建立代理,返回的代理對象也只能轉換到某 個接口類型。 CGLIB動態代理 第三方庫cglib提供,cglib的實現機制與Java SDK不一樣,它是經過繼承實現的,它也是動態建立了一個類,但 這個類的父類是被代理的類。 經過代碼模擬事務控制 JDK動態代理 Java SDK代理的是對象,須要先有一個實際對象,自定義的InvocationHandler引用該對象,而後建立一個代理類 和代理對象,客戶端訪問的是代理對象,代理對象最後再調用實際對象的方法 .Cglib動態代理 cglib代理的是類,建立的對象只有一個。spa

相關文章
相關標籤/搜索