【DAY_03】SSM原理知識

SSM項目理解

SSM → Spring + SpringMVC + MyBatis前端

 

1、SSM層次

數據持久層:DAO層(mapper)

DAO層:DAO層主要是作數據持久層的工做,負責與數據庫進行聯絡的一些任務都封裝在此。DAO層的設計首先是設計DAO的接口,而後在Spring的配置文件中定義此接口的實現類,而後就可在模塊中調用此接口來進行數據業務的處理,而不用關心此接口的具體實現類是哪一個類,顯得結構很是清晰,DAO層的數據源配置,以及有關數據庫鏈接的參數都在Spring的配置文件中進行配置。java

業務層:Service層

Service層:Service層主要負責業務模塊的邏輯應用設計。 首先設計接口,再設計其實現的類接着再在Spring的配置文件中配置其實現的關聯。這樣咱們就能夠在應用中調用Service接口來進行業務處理。 Service層的業務實現,具體要調用到已定義的DAO層的接口,封裝Service層的業務邏輯有利於通用的業務邏輯的獨立性和重複利用性,程序顯得很是簡潔。web

控制層:Controller層(Handler層)

Controller層:Controller層負責具體的業務模塊流程的控制, 在此層裏面要調用Service層的接口來控制業務流程,控制的配置也一樣是在Spring的配置文件裏面進行,針對具體的業務流程,會有不一樣的控制器,咱們具體的設計過程當中能夠將流程進行抽象概括,設計出能夠重複利用的子單元流程模塊,這樣不只使程序結構變得清晰,也大大減小了代碼量。spring

各層聯繫

DAO層,Service層這兩個層次均可以單獨開發,互相的耦合度很低,徹底能夠獨立進行,這樣的一種模式在開發大項目的過程當中尤爲有優點。Controller,View層由於耦合度比較高,於是要結合在一塊兒開發,可是也能夠看做一個總體獨立於前兩個層進行開發。這樣,在層與層以前咱們只須要知道接口的定義,調用接口便可完成所須要的邏輯單元應用,一切顯得很是清晰簡單。sql

Service邏輯層設計:Service層是創建在DAO層之上的,創建了DAO層後才能夠創建Service層,而Service層又是在Controller層之下的,於是Service層應該既調用DAO層的接口,又要提供接口給Controller層的類來進行調用,它恰好處於一箇中間層的位置。每一個模型都有一個Service接口,每一個接口分別封裝各自的業務處理方法。數據庫

 

2、SSM框架整合說明

整合Dao層


MyBatis配置文件 sqlMapConfig.xml

  • 配置別名:用於批量掃描Pojo包spring-mvc

  • 不須要配置mappers標籤,但必定要保證mapper.java文件與mapper.xml文件同名mybatis

Spring配置文件 applicationContext-dao.xml

  • 主要配置內容 :數據源,SqlSessionFactory,mapper掃描器 架構

  • 這裏使用sqlSessionFactoryBeanName屬性是由於若是配置的是sqlSessionFactory屬性,將不會先加載數據庫配置文件及數據源配置mvc

建立所需的Mapper.java

通常不動原始生成的po類,而是將原始類進行集成vo類

建立POJO類對應的mapper.xml

整合service層

目標:讓spring管理service接口。


定義service接口

通常在ssm.service包下定義接口 eg:ItemsService

定義ServiceImpl實現類

由於在applicationContext-dao.xml中已經使用了mapper掃描器,這裏能夠直接經過註解的方式將itemsMapperCustom自動注入。

在spring容器配置service

applicationContext-service.xml在此文件中配置service。

整合springmvc

建立springmvc.xml文件,配置處理器映射器 、 適配器、視圖解析器

配置前端控制器

在web.xml中加入以下內容 contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器、適配器等等) 若是不配置contextConfigLocation,默認加載的是/WEB-INF/servlet名稱-serlvet.xml(springmvc-servlet.xml) 在url-pattern中 填入.action,表示訪問以.action結尾 由DispatcherServlet進行解析 填入/,全部訪問的地址都由DispatcherServlet進行解析,對於靜態文件的解析須要配置不讓DispatcherServlet進行解析,使用此種方式能夠實現RESTful風格的url

 

加載spring容器


  • web.xml中,添加spring容器監聽器,加載spring容器

 

 

3、Mybatis的原理

一、數據庫鏈接,使用時建立,不使用就關閉,對數據庫進行頻繁鏈接開啓和關閉,形成數據庫資源的浪費

解決:使用數據庫鏈接池管理數據庫鏈接

二、將sql 語句硬編碼到Java代碼中,若是sql語句修改,須要對java代碼從新編譯,不利於系統維護

解決:將sql語句設置在xml配置文件中,即便sql變化,也無需從新編譯

三、向preparedStatement中設置參數,對佔位符位置和設置參數值,硬編碼到Java文件中,不利於系統維護

解決:將sql語句及佔位符,參數所有配置在xml文件中

四、從resutSet中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,不利於系統維護。解決:將查詢的結果集,自動映射成java對象

 

 

4、Mapper.xml映射

<select id="queryById" parameterType="long" resultType="Paper" >   
SELECT paper_id,name,number,detail   FROM paper   WHERE paper_id=#{paperId}
</select>

如圖,parameterType表示接收變量的類型,resultType表示返回的結果的數據類型,這個select表示接收long型數據,返回paper型結果

#{}告訴 MyBatis 建立一個預處理語句(PreparedStatement)參數,在 JDBC 中,這樣的一個參數在 SQL 中會由一個「?」來標識,並被傳遞到一個新的預處理語句中,就像這樣:

//  JDBC 代碼,非 MyBatis 代碼...
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);

 

5、Maven

用處一:相同的項目結構

Maven 的翻譯爲 「專家」、「行家」 ,是一個跨平臺的項目管理工具。主要用於:基於 Java 平臺的項目(Maven 自己也是 Java 編寫的)的構建、依賴包管理和項目信息管理。

用處二:統一維護 jar 包

Maven能提供一種項目的依賴配置,配置好的項目,Maven 能自動的從 Maven 的中央倉庫中幫咱們下載並管理項目依賴的 jar 包,而且還能自動的管理這些 jar 包依賴的其餘 jar 包。 maven 風格的項目,首先把全部的 jar 包都放在"倉庫「 裏,而後哪一個項目須要用到這個 jar 包,只須要給出 jar 包的名稱和版本號就好了。 這樣 jar 包就實現了共享。

 

建立項目:

pom.xml文件中聲明依賴的 jar 包,在web.xml中聲明編碼過濾器並配置 DispatcherServlet。在spring-mybatis.xml中完成 spring 和 mybatis 的配置。在spring-mvc.xml中完成 Spring MVC 的相關配置。在jdbc.properties中配置 c3p0 數據庫鏈接池。在logback.xml中完成日誌輸出的相關配置。

 

6、三層架構

三層架構由用戶界面層/表示層(User Interface),業務邏輯層(Business Logic Layer)和數據訪問層(Data Acess Layer)構成。

其中每一層的做用爲:

  1. 用戶界面層:負責與用戶進行交互。

  2. 業務邏輯層:主要是針對具體的問題的操做,也能夠理解成對數據層的操做,對數據業務邏輯處理。

  3. 數據訪問層:主要是對非原始數據(數據庫或者文本文件等存放數據的形式)的操做層,也就是說是對數據庫,而不是對數據的操做,具體爲業務邏輯層或用戶界面層提供數據服務。

 

7、SSM與三層架構的關係

SSM主要由Spring,SpringMVC 和 Mybatis三個構成。它們在三層架構中所處的位置是不一樣的,即它們在三層架構中的功能各不相同,各司其職。

  1. SpringMVC:做爲View層的實現者,完成用戶的請求接收功能。SpringMVC的Controller做爲整個應用的控制器,完成用戶請求的轉發及對用戶的響應

  2. MyBatis:做爲 Dao層的實現者,完成對數據庫的增、刪、改、查功能

  3. Spring:以整個應用大管家的身份出現。整個應用中全部的Bean的生命週期行爲,均由Spring來管理。即整個應用中全部對象的建立、初始化、銷燬,及對象間關聯關係的維護,均由Spring進行管理

相關文章
相關標籤/搜索