美文网首页工具程序员程序员首页投稿
IDEA2017 SSM框架整合搭建 Maven + Sprin

IDEA2017 SSM框架整合搭建 Maven + Sprin

作者: _Ninth | 来源:发表于2017-10-28 16:39 被阅读288次

    寄语:本文采用IDEA开发,建议按着文章顺序先搭建项目,只要按着目录结构先把目录建好就是复制粘贴的问题。内里代码也有注释,先搭建好,在慢慢看着代码思考,想想问什么这么做?即使你是初学者,按着一步一步也是可以搭建整合的。


    步骤目录
    1.创建Maven项目
    1.1-1.6 看图操作
    2.配置文件
    2.1pom.xml
    2.2jdbc.properties
    2.3log4j.properties
    2.4spring-mvc.xml
    2.5spring-mybatis.xml
    2.6web.xml
    3.创建demo
    3.1Controller
    3.2 Dao
    3.3 model
    3.3.1数据库文件
    3.4 Service
    3.4.1 ServiceImpl
    4.项目部署
    4.1 识别目录
    4.3 创建一个Tomca
    4.4 配置访问根路径
    4.5 浏览器访问

    1. 创建maven项目

    1.1 File -> New Module,进入创建项目窗口。

    1.2 点击Next,填写GroupId、ArtifactId和Version

    1.3 接着下一步,这里需要注在Properties中添加一个参数archetypeCatalog=internal

    1.4 填写Module name

    创建完成


    生成项目骨架:Maven在自动下载所需要的jar包,以下代码段可以选择跳过,为控制台输出Maven的log

    C:\Develop\jdk1.8.0_25\bin\java -Dmaven.multiModuleProjectDirectory=C:\Users\NINTH\AppData\Local\Temp\archetypetmp -Dmaven.home=C:\Develop\IDEA_2017.2.5\plugins\maven\lib\maven3 -Dclassworlds.conf=C:\Develop\IDEA_2017.2.5\plugins\maven\lib\maven3\bin\m2.conf -Dfile.encoding=UTF-8 -classpath C:\Develop\IDEA_2017.2.5\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2017.2.5 -DinteractiveMode=false -DgroupId=com.ninth.web -DartifactId=web-ssm -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=RELEASE org.apache.maven.plugins:maven-archetype-plugin:RELEASE:generate
    [INFO] Scanning for projects...
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml (825 B at 0.2 KB/sec)
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/3.0.1/maven-archetype-plugin-3.0.1.pom
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/3.0.1/maven-archetype-plugin-3.0.1.pom (10 KB at 21.2 KB/sec)
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetype/maven-archetype/3.0.1/maven-archetype-3.0.1.pom
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetype/maven-archetype/3.0.1/maven-archetype-3.0.1.pom (13 KB at 20.8 KB/sec)
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/30/maven-parent-30.pom
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/30/maven-parent-30.pom (41 KB at 52.7 KB/sec)
    Downloading: https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom (16 KB at 30.6 KB/sec)
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/3.0.1/maven-archetype-plugin-3.0.1.jar
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/3.0.1/maven-archetype-plugin-3.0.1.jar (94 KB at 82.6 KB/sec)
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:3.0.1:generate (default-cli) > generate-sources @ standalone-pom >>>
    [INFO]
    [INFO] <<< maven-archetype-plugin:3.0.1:generate (default-cli) < generate-sources @ standalone-pom <<<
    [INFO]
    [INFO] --- maven-archetype-plugin:3.0.1:generate (default-cli) @ standalone-pom ---
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-catalog/3.0.1/archetype-catalog-3.0.1.pom
    Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-catalog/3.0.1/archetype-catalog-3.0.1.pom (2 KB at 4.6 KB/sec)
    ....................中间省略一大部分.........................
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:RELEASE
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: basedir, Value: C:\Users\NINTH\AppData\Local\Temp\archetypetmp
    [INFO] Parameter: package, Value: com.ninth.web
    [INFO] Parameter: groupId, Value: com.ninth.web
    [INFO] Parameter: artifactId, Value: web-ssm
    [INFO] Parameter: packageName, Value: com.ninth.web
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] project created from Old (1.x) Archetype in dir: C:\Users\NINTH\AppData\Local\Temp\archetypetmp\web-ssm
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 01:29 min
    [INFO] Finished at: 2017-10-27T16:41:21+08:00
    [INFO] Final Memory: 15M/287M
    [INFO] ------------------------------------------------------------------------
    [INFO] Maven execution finished
    

    1.6 Maven骨架搭建之后,个人建议可以先按着以下目录图把项目所有需要的文件准备好,继续看下去就是把代码复制到各个文件,非常简单方便。

    项目完整目录

    2.项目配置

    2.1项目配置文件 pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.heitian.web</groupId>
      <artifactId>web-ssm</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>web-ssm Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    
        <!-- spring版本号 -->
        <spring.version>4.2.5.RELEASE</spring.version>
    
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.8</mybatis.version>
    
        <!-- mysql驱动版本号 -->
        <mysql-driver.version>5.1.29</mysql-driver.version>
    
        <!-- log4j日志包版本号 -->
        <slf4j.version>1.7.18</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    
      </properties>
    
    
      <dependencies>
        <!-- 添加jstl依赖 -->
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
    
        <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>7.0</version>
        </dependency>
    
        <!-- 添加junit4依赖 -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <!-- 指定范围,在测试时才会加载 -->
          <scope>test</scope>
        </dependency>
    
        <!-- 添加spring核心依赖 -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-oxm</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <!-- 添加mybatis依赖 -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
        </dependency>
    
        <!-- 添加mybatis/spring整合包依赖 -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.2.2</version>
        </dependency>
    
        <!-- 添加mysql驱动依赖 -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>${mysql-driver.version}</version>
        </dependency>
        <!-- 添加数据库连接池依赖 -->
        <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.2.2</version>
        </dependency>
    
        <!-- 添加fastjson -->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.1.41</version>
        </dependency>
    
        <!-- 添加日志相关jar包 -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>${log4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
    
        <!-- log end -->
        <!-- 映入JSON -->
        <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-mapper-asl</artifactId>
          <version>1.9.13</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.8.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.8.0</version>
        </dependency>
    
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
    
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
        </dependency>
    
        <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.9</version>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>web-ssm</finalName>
      </build>
    </project>
    

    2.2 配置JDBC文件 jdbc.properties

    driverClasss=com.mysql.jdbc.Driver  
    jdbcUrl=jdbc:mysql://localhost:3306/db_ssm?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull  
    username=root  
    password=root  
      
    #定义初始连接数  
    initialSize=0  
    #定义最大连接数  
    maxActive=20  
    #定义最大空闲  
    maxIdle=20  
    #定义最小空闲  
    minIdle=1  
    #定义最长等待时间  
    maxWait=60000  
    

    2.3 log4j 配置文件 log4j.properties

    log4j.rootLogger=INFO,Console,File  
      
    #控制台日志  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.Target=System.out  
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n  
      
    #普通文件日志  
    log4j.appender.File=org.apache.log4j.RollingFileAppender  
    log4j.appender.File.File=logs/ssm.log  
    log4j.appender.File.MaxFileSize=10MB  
    #输出日志,如果换成DEBUG表示输出DEBUG以上级别日志  
    log4j.appender.File.Threshold=ALL  
    log4j.appender.File.layout=org.apache.log4j.PatternLayout  
    log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n  
    

    2.4配置 springmvc文件 spring-mvc.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:p="http://www.springframework.org/schema/p"
           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-4.0.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-4.0.xsd
                            http://www.springframework.org/schema/mvc
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    
        <!-- 自动扫描  @Controller-->
        <context:component-scan base-package="com.heitian.ssm.controller"/>
    
        <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
        <bean id="mappingJacksonHttpMessageConverter"
              class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
        </bean>
        <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 -->
                </list>
            </property>
        </bean>
    
    
        <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <!-- 文件上传配置 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 默认编码 -->
            <property name="defaultEncoding" value="UTF-8"/>
            <!-- 上传文件大小限制为31M,31*1024*1024 -->
            <property name="maxUploadSize" value="32505856"/>
            <!-- 内存中的最大值 -->
            <property name="maxInMemorySize" value="4096"/>
        </bean>
    </beans>
    

    2.5 配置spring和mybatis整合所需的配置文件 spring-mybatis.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:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-3.1.xsd
                            http://www.springframework.org/schema/tx
                            http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!-- 自动扫描 -->
        <context:component-scan base-package="com.heitian.ssm"/>
    
        <!-- 第一种方式:加载一个properties文件 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties"/>
        </bean>
    
    
        <!-- 第二种方式:加载多个properties文件
        <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="locations">
                <list>
                    <value>classpath:jdbc.properties</value>
                    <value>classpath:common.properties</value>
                </list>
            </property>
            <property name="fileEncoding" value="UTF-8"/>
        </bean>
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
            <property name="properties" ref="configProperties"/>
        </bean>
        -->
    
        <!-- 配置数据源 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
              destroy-method="close">
            <property name="driverClassName" value="${driverClasss}"/>
            <property name="url" value="${jdbcUrl}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
            <!-- 初始化连接大小 -->
            <property name="initialSize" value="${initialSize}"></property>
            <!-- 连接池最大数量 -->
            <property name="maxActive" value="${maxActive}"></property>
            <!-- 连接池最大空闲 -->
            <property name="maxIdle" value="${maxIdle}"></property>
            <!-- 连接池最小空闲 -->
            <property name="minIdle" value="${minIdle}"></property>
            <!-- 获取连接最大等待时间 -->
            <property name="maxWait" value="${maxWait}"></property>
        </bean>
    
        <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!-- 自动扫描mapping.xml文件 -->
            <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
        </bean>
    
        <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.heitian.ssm.dao"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>
    
    
        <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    </beans>
    

    2.6web.xml配置文件 web.xml

    <?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">
    
        <display-name>web-ssm</display-name>
        
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mybatis.xml</param-value>
        </context-param>
    
        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>classpath:log4j.properties</param-value>
        </context-param>
    
        <!-- 编码过滤器 -->
        <filter>
            <filter-name>encodingFilter</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>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- spring监听器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- 防止spring内存溢出监听器,比如quartz -->
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
    
    
        <!-- spring mvc servlet-->
        <servlet>
            <servlet-name>SpringMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>
        <servlet-mapping>
            <servlet-name>SpringMVC</servlet-name>
            <!-- 此处也可以配置成 *.do 形式 -->
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <welcome-file-list>
            <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>
    
        <!-- session配置 -->
        <session-config>
            <session-timeout>15</session-timeout>
        </session-config>
    
    </web-app>
    

    3.做一个查询小demo

    3.1Controller文件 UserController

    package com.ninth.ssm.controller;
    
    import com.ninth.ssm.model.User;
    import com.ninth.ssm.service.UserService;
    import org.apache.log4j.Logger;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import java.util.List;
    
    /**
     * Created by Ninth on 2017-10-28 15:29.
     * 
    **/
    
    
    @Controller
    @RequestMapping("/user")
    public class UserController {
    
        private Logger log = Logger.getLogger(UserController.class);
        @Resource
        private UserService userService;
    
        @RequestMapping("/showUser")
        public String showUser(HttpServletRequest request, Model model){
            log.info("查询所有用户信息");
            List<User> userList = userService.getAllUser();
            model.addAttribute("userList",userList);
            return "showUser";
        }
    }
    

    3.2 dao文件 UserDao

    package com.ninth.ssm.dao;
    
    import com.ninth.ssm.model.User;
    import org.apache.ibatis.annotations.Param;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    /**
     * Created by Ninth on 2017-10-28 15:29.
     * 
    **/
    
    
    @Repository
    public interface UserDao {
    
        User selectUserById(@Param("userId") Long userId);
    
        User selectUserByPhoneOrEmail(@Param("emailOrPhone") String emailOrPhone, @Param("state") Short state);
    
        List<User> selectAllUser();
    }
    
    

    3.3 model文件 User

    package com.ninth.ssm.model;
    
    import java.util.Date;
    
    /**
     * Created by Ninth on 2017-10-28 15:29.
     *
    **/
    
    public class User {
    
        private Long id;
        private String userName;
        private String userPhone;
        private String userEmail;
        private String userPwd;
        private String pwdSalt;
        private Date createTime;
        private Date modifyTime;
        private Short isDelete;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getUserPhone() {
            return userPhone;
        }
    
        public void setUserPhone(String userPhone) {
            this.userPhone = userPhone;
        }
    
        public String getUserEmail() {
            return userEmail;
        }
    
        public void setUserEmail(String userEmail) {
            this.userEmail = userEmail;
        }
    
        public String getUserPwd() {
            return userPwd;
        }
    
        public void setUserPwd(String userPwd) {
            this.userPwd = userPwd;
        }
    
        public String getPwdSalt() {
            return pwdSalt;
        }
    
        public void setPwdSalt(String pwdSalt) {
            this.pwdSalt = pwdSalt;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
    
        public Date getModifyTime() {
            return modifyTime;
        }
    
        public void setModifyTime(Date modifyTime) {
            this.modifyTime = modifyTime;
        }
    
        public Short getIsDelete() {
            return isDelete;
        }
    
        public void setIsDelete(Short isDelete) {
            this.isDelete = isDelete;
        }
    }
    
    

    3.3.1数据库文件

    在sql创建数据库db_ssm,然后运行目录下的sql文件,自动生成表,当然,你也可以手动建表。

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `t_user`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` bigint(11) NOT NULL auto_increment,
      `user_name` varchar(255) default NULL COMMENT '用户名',
      `user_phone` varchar(20) default NULL COMMENT '手机号',
      `user_email` varchar(255) default NULL COMMENT '邮箱地址',
      `user_pwd` varchar(32) default NULL COMMENT '加盐后用户密码',
      `pwd_salt` varchar(6) default NULL COMMENT 'MD5盐',
      `create_time` datetime default NULL COMMENT '创建时间',
      `modify_time` datetime default NULL COMMENT '最后修改时间',
      `is_delete` tinyint(4) default NULL COMMENT '是否删除,0-未删除;1-已删除',
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户登录表';
    
    -- ----------------------------
    -- Records of t_user
    -- ----------------------------
    INSERT INTO `t_user` VALUES ('1', '赵大宝', '13285250574', '1045221654@qq.com', '05126a423a9379d529e4ee61a212fa55', 'KJUYT5', '2016-07-15 23:38:56', '2016-07-15 23:39:09', '0');
    INSERT INTO `t_user` VALUES ('2', '张三丰', '15985250574', '1198224554@qq.com', '98bd3a1bebde01ad363d3c5a0d1e56da', '656JHU', '2016-07-15 23:39:01', '2016-07-15 23:39:13', '0');
    INSERT INTO `t_user` VALUES ('3', '王尼玛', '13685250574', '1256221654@qq.com', '5470db9b63c354f6c8d628b80ae2f3c3', '89UIKQ', '2016-07-15 23:39:05', '2016-07-15 23:39:16', '0');
    
    

    3.4 Service文件 UserService

    package com.ninth.ssm.service;
    
    import com.ninth.ssm.model.User;
    import java.util.List;
    
    /**
     * Created by Ninth on 2017-10-28 15:30.
     * 
    **/
    
    public interface UserService {
    
        List<User> getAllUser();
    
        User getUserByPhoneOrEmail(String emailOrPhone, Short state);
    
        User getUserById(Long userId);
    }
    
    

    3.4.1 Service实现类 IUserServiceimpl

    package com.ninth.ssm.service.impl;
    
    import com.ninth.ssm.dao.UserDao;
    import com.ninth.ssm.model.User;
    import com.ninth.ssm.service.UserService;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * Created by Ninth on 2017-10-28 15:30.
     * 
    **/
    
    
    @Service
    @Transactional(rollbackFor = Exception.class)
    public class UserServiceImpl implements UserService {
    
        @Resource
        private UserDao userDao;
    
        public User getUserById(Long userId) {
            return userDao.selectUserById(userId);
        }
    
        public User getUserByPhoneOrEmail(String emailOrPhone, Short state) {
            return userDao.selectUserByPhoneOrEmail(emailOrPhone,state);
        }
    
        public List<User> getAllUser() {
            return userDao.selectAllUser();
        }
    }
    

    3.5 Mapper文件 UserMapper.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="com.ninth.ssm.dao.UserDao">
    
        <resultMap id="UserBaseMap" type="com.ninth.ssm.model.User">
            <id column="id" property="id" jdbcType="BIGINT"/>
            <result column="user_name" property="userName" jdbcType="VARCHAR"/>
            <result column="user_phone" property="userPhone" jdbcType="VARCHAR"/>
            <result column="user_email" property="userEmail" jdbcType="VARCHAR"/>
            <result column="user_pwd" property="userPwd" jdbcType="VARCHAR"/>
            <result column="pwd_salt" property="pwdSalt" jdbcType="VARCHAR"/>
            <result column="create_time" property="createTime" jdbcType="DATE"/>
            <result column="modify_time" property="modifyTime" jdbcType="DATE"/>
            <result column="is_delete" property="isDelete" jdbcType="SMALLINT"></result>
        </resultMap>
    
        <select id="selectUserById" parameterType="java.lang.Long" resultMap="UserBaseMap">
            SELECT * FROM t_user
            WHERE id = #{userId}
        </select>
    
        <select id="selectUserByPhoneOrEmail" resultMap="UserBaseMap">
            SELECT * FROM t_user
            WHERE user_email = #{emailOrPhone} OR user_phone = #{emailOrPhone}
            AND user_state = #{state}
        </select>
    
        <select id="selectAllUser" resultMap="UserBaseMap">
            SELECT * FROM t_user
        </select>
    
    </mapper>
    

    4.项目部署

    4.1 识别目录作用,选择File-Project Structure

    4.3 创建一个Tomcat容器实例,并把项目部署进去

    4.4 项目所需配置好项目访问的根路径,然后启动Tomcat。

    4.5 浏览器访问验证 浏览器输入http://localhost:8080/maver-ssm/user/showUser,出现下图,恭喜你

    相关文章

      网友评论

        本文标题:IDEA2017 SSM框架整合搭建 Maven + Sprin

        本文链接:https://www.haomeiwen.com/subject/mxespxtx.html