springMVC和mybatis的原理


mybatis是什么?

         mybatis是一個持久層框架,是apache下的開源項目,前身是itbatis,是一個不完全的ORM框架,mybatis提供輸入和輸出的映射,需要程序員自己寫sql語句,mybatis重點對 sql語句的靈活操作。

         適合用於:需求變化頻繁, 數據模型不固定的項目,例如:互聯網項目。

 

mybatis架構?

         SqlMapConfig.xml(名稱不固定),配置內容:數據源、事務、properties、typeAliases、settings、mapper配置。

 

         SqlSessionFactory--會話工廠,作用是創建SqlSession,實際開發中以單例模式管理 SqlSessionFactory。

        

         SqlSession--會話,是一個面向用戶(程序員)的接口,使用mapper代理方法開發是不需要程序員直接調用sqlSession的方法。是線程不安全,最佳適用場合方法體內。

 

mybatis開發dao的方法:

         1、原始dao開發方法,需要程序員編寫dao接口和實現類,此方法在當前企業中還有使用,因為ibatis使用的就是原始dao開發方法。

         2、mapper代理方法,程序員只需要寫mapper接口(相當於dao接口),mybatis自動根據mapper接口和mapper接口對應的statement自動生成代理對象(接口實現類對象)。

         開發需要遵循規則:

          1)mapper.xml中namespace是mapper接口的全限定名

          2)mapper.xml中statement的id為mapper接口方法名

          3)mapper.xml中statement的輸入映射類型(parameterType)和mapper接口方法輸入參數類型一致

          4) mapper.xml中statement的輸出映射類型(resultType)和mapper接口方法返回結果類型一致

 

resultType和resultMap都可以完成輸出映射:

         resultType映射要求sql查詢的列名和輸出映射pojo類型的屬性名一致

         resultMap映射時對sql查詢的列名和輸出映射pojo類型的屬性名作一個對應關系。

 

動態sql:

         #{}和${}完成輸入參數的屬性值獲取,通過OGNL獲取parameterType指定pojo的屬性名。

    #{}:占位符號,好處防止sql注入

         ${}:sql拼接符號

         if

         where

         foreach

 

 

springmvc框架:

 

用戶請求url到DispatcherServlet前端控制器,相當於中央調度器,降低系統各組件之間耦合度

 

DispatcherServlet前端控制器通過HandlerMapping根據url找到Handler。

 

DispatcherServlet前端控制器通過HandlerAdapter處理器適配器執行Handler。

 

DispatcherServlet前端控制器拿着Handler返回的ModelAndView通過視圖解析器ViewResolver去進行視圖解析。

 

視圖解析:將程序中寫的邏輯視圖名,轉成真正的視圖(springmvc通過view表示各各不同類型的視圖)。

DispatcherServlet前端控制器調用View的渲染方法進行視圖渲染(將ModelAndView中的Model放到request域)。

 

要掌握springmvc的注解開發,企業中常用springmvc注解開發。

 

使用專門注解處理器映射器(RequestMappingHandlerMapping)和處理器適配器(RequestMappingHandlerAdapter)。

<mvc:annotation-driven/>可以代替上邊的處理器映射器和適配器的配置。

 

在Handler(Controller)中定義很多的方法,一個方法通過RequestMapping和url進行映射。

 

方法返回值:ModelAndView、string(jsp的邏輯視圖名)、void(通過response將數據輸出成json)

 

方法輸入參數(形參):springmvc需要將請求的key/value(串,id=001&type=t002)、解析、綁定到Handler(Controller)中方法的形參上。

springmvc默認支持多類型的參數綁定。

 

默認支持哪些類型:

HttpServletRequest、response、session、Model(用於將數據填充到request域)

 

@requestParam注解:用於綁定單個請求參數,常用於簡單類型參數(Integer、String 、Float。。。)綁定。

不用 @requestParam要求請求參數的名稱和方法形參名一致方可綁定。

 

對於簡單類型參數中的日期型,建議使用自定義參數綁定,對日期型數據個化定義日期的格式。

 

自定義參數綁定:建議使用Convertor進行參數綁定。

 

還可以綁定pojo、包裝的pojo。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM