天天看點

Intellij idea基于Maven 的SSM 架構整合

基于Maven 的SSM 架構整合

一、工程建立

Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合
Intellij idea基于Maven 的SSM 架構整合

二、pom.xml中引入jar包

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>

    <!-- spring版本号 -->
    <spring.version>5.0.8.RELEASE</spring.version>

    <!--aopalliance 版本号-->
    <aopalliance.version>1.0</aopalliance.version>

    <!--aspectj 版本号-->
    <aspectj.version>1.9.2</aspectj.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.6</mybatis.version>

    <!-- log4j日志檔案管理包版本 -->
    <slf4j.version>1.7.7</slf4j.version>
    <log4j2.version>2.10.0</log4j2.version>
    <commons-logging.version>1.2</commons-logging.version>
    <!--jackson  -->
    <jackson.version>2.9.6</jackson.version>
    <!--mybatis 版本号 -->
    <mybatis-spring.version>1.3.2</mybatis-spring.version>
    <mybatis.version>3.4.6</mybatis.version>

    <!--mysql 版本号  -->
    <mysql.version>5.1.46</mysql.version>
    <!--jstl 版本号  -->
    <jstl.version>1.2</jstl.version>
    <!--junit 測試版本好-->
    <junit.version>4.12</junit.version>
  </properties>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <!--spring mvc-->

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--spring  aop 動态代理-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>${aopalliance.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>${aspectj.version}</version>
    </dependency>

    <!--資料庫 驅動-->
    <!--${mysql.version}-->
    <!--5.1.46-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!--spring jdbc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>${mybatis-spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <!-- 日志 -->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>${commons-logging.version}</version>
    </dependency>

    <!--log4j 日志-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j2.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j2.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-web</artifactId>
      <version>${log4j2.version}</version>
    </dependency>

    <!--jsp  web.xml 依賴-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-jsp-api</artifactId>
      <version>8.5.32</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>${jstl.version}</version>
    </dependency>

    <!--json 解析-->

    <!--google json  可選-->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.5</version>
    </dependency>

    <!--必選-->
    <!-- Jackson Json處理工具包 springmvc 處理json資料的 -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <!--fast json 可選-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.54</version>
    </dependency>
  </dependencies>

           

三、tomcat熱啟動插件

<!--
   tomcat 插件
-->
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <path>/</path>
        <port>8088</port>
        <uriEncoding>UTF-8</uriEncoding>
        <useBodyEncodingForURI>true</useBodyEncodingForURI>
        <server>tomcat7</server>
    </configuration>
</plugin>
           

四、web.xml配置

web.xml

需要配置加載Spring檔案的監聽器、Spring mvc前端控制器、字元編碼過濾器、log4j2 日志配置( 可選)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <!-- 配置加載Spring檔案的監聽器-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <!-- 編碼過濾器 -->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>
    <!-- 配置Spring MVC前端核心控制器 -->
    <servlet>
        <servlet-name>spring-mvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc-servlet.xml</param-value>
        </init-param>
        <!-- 配置伺服器啟動後立即加載Spring MVC配置檔案 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <!--/:攔截所有請求(除了jsp)-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!--log4j2 日志配置 可選-->
    <listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>
    <filter>
        <filter-name>log4jServletFilter</filter-name>
        <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>log4jServletFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

    <!--歡迎頁面-->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

           

五、

spring-mvc-servlet.xml

前端控制器配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 配置掃描的包 -->
    <context:component-scan base-package="org.songwang" />
    <!--主要就是為了Spring MVC來用的,提供Controller請求轉發,json自動轉換等功能-->
    <!--必填,屬性根據需要填寫-->
    <mvc:annotation-driven/>

    <!--<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>-->


    <!-- 自定義參數綁定  可選-->
    <!--<bean id="conversionService"-->
          <!--class="org.springframework.format.support.FormattingConversionServiceFactoryBean">-->
        <!--&lt;!&ndash; 轉換器 &ndash;&gt;-->
        <!--<property name="converters">-->
            <!--<list>-->
                <!--&lt;!&ndash; 日期類型轉換 &ndash;&gt;-->
                <!--<bean class="org.songwang.util.DateConverter" />-->
            <!--</list>-->
        <!--</property>-->
    <!--</bean>-->

    <!-- 視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".html"></property>
    </bean>

    <!--靜态資源過濾 可選-->
    <!--<mvc:resources location="/font/" mapping="/font/**"/>-->
    <!--<mvc:resources location="/js/" mapping="/js/**"/>-->
    <!--<mvc:resources location="/css/" mapping="/css/**"/>-->
    <!--<mvc:resources location="/images/" mapping="/images/**"/>-->
    <!--<mvc:resources location="/element-ui/" mapping="/element-ui/**"/>-->


    <!--配置攔截器 可選-->
    <!--<mvc:interceptors>-->
        <!--<mvc:interceptor>-->
            <!--<mvc:mapping path="/**"/>-->
            <!--<bean class="org.songwang.interceptor.MainInterceptor"></bean>-->
        <!--</mvc:interceptor>-->
    <!--</mvc:interceptors>-->

    <!--檔案上傳解析器,可選-->
    <!--配置檔案上傳解析器  id 名稱必須為multipartResolver-->
    <!--<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">-->
        <!--&lt;!&ndash;設定請求的編碼格式&ndash;&gt;-->
        <!--<property name="defaultEncoding" value="UTF-8"></property>-->
    <!--</bean>-->
</beans>
           

六、

mysql.properties

資料庫驅動參數配置檔案

jdbc.driverClassName=com.mysql.jdbc.Driver
#com.mysql.cj.jdbc.Driver
#com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/weekfour?characterEncoding=utf8
#?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false&autoReconnect=true
#?characterEncoding=utf8
jdbc.username=root
jdbc.password=root1234
           

七、log4j2.xml日志配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF" monitorInterval="1800">
    <properties>
        <property name="LOG_HOME">/WEB-INF/logs</property>
        <property name="FILE_NAME">finance-pay</property>
    </properties>


    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <RollingFile name="running-log" fileName="${LOG_HOME}/${FILE_NAME}.log"
                     filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz"
                     immediateFlush="true">
            <PatternLayout
                    pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
    <Loggers>

        <!-- <Logger name="com.cssweb.test.app" level="trace" additivity="true">
            <AppenderRef ref="running-log" /> </Logger> -->

        <Root level="info">
            <!-- 這裡是輸入到檔案,很重要-->
            <AppenderRef ref="running-log" />
            <!-- 這裡是輸入到控制台-->
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
           

八、mybatis-config.xml配置檔案

<?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>
    <settings>
        <!-- log4j2 列印查詢語句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>

</configuration>
           

九、mybatis mapper 檔案

userDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.songwang.dao.UserDao">
<!--............-->
</mapper>
           

十、 Spring 核心配置檔案

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
	    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 配置掃描的包 -->
    <context:component-scan base-package="org.songwang" />
    <!--加載mysql驅動配置檔案  -->
    <context:property-placeholder location="classpath:mysql.properties"/>
    <bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 讀取mybatis檔案 -->
    <!-- 配置SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--mybatis和資料庫連接配接  那我肯定需要注入資料源  -->
        <property name="dataSource" ref="dataSource"/>

        <!--讀取mybatis的總配置  -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 類型别名掃描包 -->
        <property name="typeAliasesPackage" value="org.songwang.pojo"></property>
        <!--配置檔案和接口分離  -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>

    <!--配置jdbc事務管理器 依賴注入dataSource-->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--mapper 掃描器 ,事務注解  方式一 -->
    <!-- 開啟事務注解 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- 配置mapper掃描器 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.songwang.dao"/>
    </bean>


    <!--mapper 掃描器 ,事務注解  方式二 -->
    
   <!-- 方式二 需要在service 中注入SqlSessionFactory 方式一不需要-->
    
    
    <!--mapper.xml  -->
    <!-- 配置接口-->
    <!--<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
    <!--<property name="mapperInterface" value="org.songwang.dao.UserDao"/>-->
    <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"/>-->
    <!--</bean>-->


    <!--<bean id="productMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
    <!--<property name="mapperInterface" value="org.songwang5.dao.ProductDao"/>-->
    <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"/>-->
    <!--</bean>-->
    <!-- 5.編寫通知:對事務進行增強(通知),需要編寫對切入點和具體執行事務細節 -->
    <!--<tx:advice id="txAdvice" transaction-manager="transactionManager">-->
        <!--<tx:attributes>-->
            <!--&lt;!&ndash; 通知方法的名稱name:*表示任意方法名稱 &ndash;&gt;-->
            <!--<tx:method name="*"-->
                       <!--isolation="DEFAULT"-->
                       <!--propagation="REQUIRED"-->
                       <!--read-only="false"-->
            <!--/>-->
        <!--</tx:attributes>-->
    <!--</tx:advice>-->
    <!--&lt;!&ndash; 6.編寫aop,讓spring自動對目标生成代理,需要使用AspectJ的表達式 &ndash;&gt;-->
    <!--<aop:config>-->
        <!--&lt;!&ndash;切入點&ndash;&gt;-->
        <!--<aop:pointcut id="txPointCut"-->
                      <!--expression="execution(* org.songwang.dao..*.*.*(..))"/>-->
        <!--&lt;!&ndash; 切面:将切入點與通知整合 &ndash;&gt;-->
        <!--<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"></aop:advisor>-->
    <!--</aop:config>-->
    <!--&lt;!&ndash; 開啟注解标簽 &ndash;&gt;-->
    <!--<tx:annotation-driven/>-->
</beans>
           

十一、測試

資料庫表:dept(部門表)

Intellij idea基于Maven 的SSM 架構整合

emp(員工表)

Intellij idea基于Maven 的SSM 架構整合

sql 語句

<select id="findEmpById" parameterType="Integer" resultType="Emp">
        select  * from emp where id = #{id}
    </select>
           

userDao

package org.songwang.dao;

import org.songwang.pojo.Emp;

public interface UserDao {

	Emp findEmpById(int id);
}
           

service

@Service
public class UserService {

	@Autowired
	private UserDao userDao;
	public Emp findEmpById(int id){
		return userDao.findEmpById(id);
	}
}
           

pom.xml 中加入Spring 的測試包

<!--spirng 測試-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>
           

測試類及方法

import com.alibaba.fastjson.JSON;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.songwang.pojo.Emp;
import org.songwang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

/**
 *
 * 功能子產品測試
 * @ClassName [SystemTest]
 * @Description [測試類]
 * @Author [songwang]
 * @Date [2019/1/15 14:56]
 * @Version [v1.0]
 **/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mvc-servlet.xml","classpath:applicationContext.xml","classpath:mybatis-config.xml"})
@WebAppConfiguration("src/main/webapp")
public class SystemTest {

	@Autowired
	private UserService userService;

	@Test
	public  void testFindEmpById(){

		Emp emp = userService.findEmpById(1);
		System.out.println(JSON.toJSONString(emp));
	}

}
           

測試結果

Intellij idea基于Maven 的SSM 架構整合

測試結果是出來了,但是我們發現

hiredate

字段是一串數字,這個顯然不是我們想要的,我們想要的是一個日期,這個我們可以通過fastjson的一個注解就可以完成,通過format 就可以列印出指定格式的日期

Intellij idea基于Maven 的SSM 架構整合

重新執行效果:

Intellij idea基于Maven 的SSM 架構整合

繼續閱讀