天天看点

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 框架整合

继续阅读