(轉)淘淘商城系列——SSM框架整合之Dao層整合


http://blog.csdn.net/yerenyuan_pku/article/details/72721093

一個項目中往往有三層即Dao層、Service層和Web層,看標題就知道了,本文我將帶領大家如何整合我們的Dao層。整合之前,我們得分析一下SSM這三大框架的整合思路,因為我們必須站在一個較高的位置,俯視整個項目,要胸懷天下,要有一個大局觀。

SSM框架的整合思路

Dao層

mybatis整合spring,通過spring管理SqlSessionFactory、mapper代理對象。在整合過程中,需要mybatis和spring的整合包。

  1. 使用mybatis框架,須創建該框架的核心配置文件——SqlMapConfig.xml。
  2. 使用spring框架,須創建一個applicationContext-dao.xml配置文件,該文件的內容有: 
    1. 配置數據源。
    2. 需要讓spring容器管理SqlsessionFactory,其是單例存在的。
    3. 把mapper的代理對象放到spring容器中,使用掃描包的方式加載mapper的代理對象。
整合內容 對應工程
Pojo taotao-mangaer-pojo
Mapper映射文件 taotao-mangaer-dao
Mapper接口 taotao-mangaer-dao
SqlMapConfig.xml taotao-mangaer-service
applicationContext-dao.xml taotao-mangaer-service

Service層

所有的service實現類都要放到spring容器中管理。由spring創建數據庫連接池,並由spring來管理事務,記得還要發布dubbo服務,不要忘記了喲!

整合內容 對應工程
Service接口 taotao-mangaer-interface
Service實現類 taotao-mangaer-service
applicationContext-service.xml taotao-mangaer-service
applicationContext-trans.xml taotao-mangaer-service

表現層

表現層就一個springmvc框架吧!由springmvc來管理controller,而且還要記得引用dubbo服務喲!總的來說,springmvc框架的核心配置文件的內容有:

  1. 需要掃描controller
  2. 配置注解驅動
  3. 配置視圖解析器
  4. 引用dubbo服務
整合內容 對應工程
springmvc.xml taotao-mangaer-web
Controller taotao-mangaer-web

最后,千萬不要忘了在web.xml文件中添加如下配置:

  1. Spring容器的配置
  2. Springmvc前端控制器的配置
  3. Post亂碼過濾器

總結

我們的taotao-manager工程包含了Dao層和Service層,Web層是一個獨立的war工程,因此我們需要將他們整合到一起。Dao層的整合也是框架的整合,我們使用的是SSM三大框架,也就是Spring、SpringMVC和Mybatis,我們先來說一下Spring和Mybatis的整合,這兩個框架的整合我們應該放到服務層(因為Mybatis的主要職責是和數據庫打交道),不建議大家把Spring和Mybatis的整合放到taotao-manager-dao工程當中,因為dao工程只是個jar工程,將來會被打包成一個jar包,配置文件也會被打包到jar包里面,我們調用起來比較麻煩,建議大家放到taotao-manager-service工程中(因為該工程是war工程,taotao-manager聚合工程最終都會打包成一個war包,war包整合了聚合工程的所有內容,因此更適合來進行框架整合)。

SSM框架整合之Dao層整合

上面簡單分析了一下SSM這三大框架的整合思路,下面我們就來整合Dao層。taotao-manager-service工程中有一個文件夾——src/main/resources,我們應該把Spring和Mybatis的整合文件放到該目錄下。 
 
我們在src/main/resource目錄下新建一個mybatis文件夾,然后在該文件夾下新建一個Mybatis的配置文件——SqlMapConfig.xml,如下圖所示。 

為方便大家復制,現將SqlMapConfig.xml文件的內容粘貼如下,我們暫時不用向里面添加任何配置,像數據庫連接池、事務之類的配置會交給Spring來管理,別名可配可不配,因此我們這里就放一個只有頭的空文件就可以了(文件雖然沒有配置任何內容,但是不能沒有)。

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>

 

下面我們再在src/main/resources目錄下新建一個spring文件夾,然后在該文件夾下新建一個applicationContext-dao.xml文件,如下圖所示。 
 
我們在applicationContext-dao.xml文件當中配置數據庫連接池、SqlSessionFactory(Mybatis的連接工廠)、Mybatis映射文件的包掃描器,配置內容如下:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 數據庫連接池 --> <!-- 加載配置文件 --> <context:property-placeholder location="classpath:properties/db.properties" /> <!-- 數據庫連接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driver}" /> <property name="maxActive" value="10" /> <property name="minIdle" value="5" /> </bean> <!-- 讓spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 數據庫連接池 --> <property name="dataSource" ref="dataSource" /> <!-- 加載mybatis的全局配置文件 --> <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.taotao.mapper" /> </bean> </beans>

從中可以看到我們配置數據庫連接池配置的是Druid連接池,Druid是目前最好的數據庫連接池,在功能、性能、擴展性方面,都超過其他數據庫連接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,經過多年生產環境大規模部署的嚴苛考驗。 
從applicationContext-dao.xml文件當中還可看出數據庫的配置直接讀取的是配置文件,因此我們需要在classpath(src/main/resource)目錄下新建一個properties文件夾,然后在該目錄下新建一個db.properties文件,如下圖所示。 

大家可以從下面直接復制,不過要根據自己的MySQL數據庫設置用戶名和密碼。

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/taotao?characterEncoding=utf-8 jdbc.username=root jdbc.password=yezi

我們在spring的配置文件——applicationContext-dao.xml中配置了SqlSessionFactory,它里面配置了數據庫連接源和mybatis全局配置文件,雖然mybatis全局配置文件中什么也沒配置,但是配置不能少。 
我們再來看看mybatis掃描包配置,如下所示,我們可以看到掃描的包是com.taotao.mapper。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.taotao.mapper" /> </bean>

這個包目前是沒有的,所以我們應在taotao-manager-dao工程的src/main/java目錄下新建這個包,如下圖所示。 
 
那么我們在taotao-manager-service的applicationContext-dao.xml文件中的掃描配置能否掃描到這個包呢?答案是可以的,因為taotao-manager-dao工程會被打包成jar包放到war工程下的WEB-INF/lib目錄下,我們的applicationContext-dao.xml文件就是在war工程中,因此掃描是沒有問題的。 
至此,我們的Dao層就整合好了。


免責聲明!

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



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