1.技术栈

1.ssm三大技术点
2.mybatis逆向工程
3.使用分页插件
4.使用bootStrap搭建前端页面

2.搭建过程

1.创建一个maven工程

2.引入项目依赖的jar包

spring
springmvc
mybatis
数据库连接池包,mysql驱动包
其他包

1.pom文件依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.xiaoqi</groupId>
  6. <artifactId>ssm_1_CRUD</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>war</packaging>
  9. <properties>
  10. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  11. <maven.compiler.source>1.8</maven.compiler.source>
  12. <maven.compiler.target>1.8</maven.compiler.target>
  13. </properties>
  14. <dependencies>
  15. <!--mybatis依赖-->
  16. <dependency>
  17. <groupId>org.mybatis</groupId>
  18. <artifactId>mybatis</artifactId>
  19. <version>3.5.0</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework</groupId>
  23. <artifactId>spring-tx</artifactId>
  24. <version>5.0.5.RELEASE</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>spring-jdbc</artifactId>
  29. <version>5.0.5.RELEASE</version>
  30. <scope>compile</scope>
  31. </dependency>
  32. <!--spring核心包-->
  33. <dependency>
  34. <groupId>org.springframework</groupId>
  35. <artifactId>spring-context</artifactId>
  36. <version>5.0.5.RELEASE</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.mybatis.generator</groupId>
  40. <artifactId>mybatis-generator-core</artifactId>
  41. <version>1.3.6</version>
  42. </dependency>
  43. <!--springAOP外部依赖-->
  44. <dependency>
  45. <groupId>org.springframework</groupId>
  46. <artifactId>spring-aspects</artifactId>
  47. <version>5.0.5.RELEASE</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework</groupId>
  51. <artifactId>spring-test</artifactId>
  52. <version>5.0.5.RELEASE</version>
  53. </dependency>
  54. <!--springMVC-->
  55. <dependency>
  56. <groupId>org.springframework</groupId>
  57. <artifactId>spring-webmvc</artifactId>
  58. <version>5.0.5.RELEASE</version>
  59. </dependency>
  60. <!--mybatis集成 spring-->
  61. <dependency>
  62. <groupId>org.mybatis</groupId>
  63. <artifactId>mybatis-spring</artifactId>
  64. <version>2.0.0</version>
  65. </dependency>
  66. <dependency>
  67. <groupId>mysql</groupId>
  68. <artifactId>mysql-connector-java</artifactId>
  69. <version>5.1.9</version>
  70. </dependency>
  71. <dependency>
  72. <groupId>com.alibaba</groupId>
  73. <artifactId>druid</artifactId>
  74. <version>1.1.12</version>
  75. </dependency>
  76. <!--jstl-->
  77. <dependency>
  78. <groupId>jstl</groupId>
  79. <artifactId>jstl</artifactId>
  80. <version>1.2</version>
  81. </dependency>
  82. <!--servlet-api-->
  83. <dependency>
  84. <groupId>javax.servlet</groupId>
  85. <artifactId>servlet-api</artifactId>
  86. <version>2.5</version>
  87. <scope>provided</scope>
  88. </dependency>
  89. <!--juint-->
  90. <dependency>
  91. <groupId>junit</groupId>
  92. <artifactId>junit</artifactId>
  93. <version>4.13.2</version>
  94. <scope>test</scope>
  95. </dependency>
  96. <dependency>
  97. <groupId>junit</groupId>
  98. <artifactId>junit</artifactId>
  99. <version>4.13</version>
  100. </dependency>
  101. <dependency>
  102. <groupId>com.xiaoqi</groupId>
  103. <artifactId>ssm_1_CRUD</artifactId>
  104. <version>1.0-SNAPSHOT</version>
  105. </dependency>
  106. <!--分页插件-->
  107. <dependency>
  108. <groupId>com.github.pagehelper</groupId>
  109. <artifactId>pagehelper</artifactId>
  110. <version>5.0.0</version>
  111. </dependency>
  112. </dependencies>
  113. <build>
  114. <resources>
  115. <resource>
  116. <directory>src/main/java</directory><!--所在的目录-->
  117. <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
  118. <include>**/*.properties</include>
  119. <include>**/*.xml</include>
  120. </includes>
  121. <filtering>false</filtering>
  122. </resource>
  123. </resources>
  124. <plugins>
  125. <plugin>
  126. <groupId>org.mybatis.generator</groupId>
  127. <artifactId>mybatis-generator-maven-plugin</artifactId>
  128. <version>1.3.6</version>
  129. <!--插件的依赖-->
  130. <dependencies>
  131. <!--逆向工程核心依赖-->
  132. <dependency>
  133. <groupId>org.mybatis.generator</groupId>
  134. <artifactId>mybatis-generator-core</artifactId>
  135. <version>1.3.6</version>
  136. </dependency>
  137. </dependencies>
  138. <configuration>
  139. <!--配置文件的位置-->
  140. <configurationFile>GeneratorMybatis</configurationFile>
  141. <verbose>true</verbose>
  142. <overwrite>true</overwrite>
  143. </configuration>
  144. </plugin>
  145. <plugin>
  146. <artifactId>maven-compiler-plugin</artifactId>
  147. <version>3.1</version>
  148. <configuration>
  149. <source>1.8</source>
  150. <target>1.8</target>
  151. </configuration>
  152. </plugin>
  153. </plugins>
  154. </build>
  155. </project>

3.引入bootStrap。

1.在页面使用标签引入

<%—引入jquery—%>

<%—引入bootStrap样式—%>

4.在web.xml中创建:

1.监听器:监听spring容器的创建

      <!--1.启动spring容器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springconfig.xml</param-value>
    </context-param>

2.中央调度器


<!--2.springmvc前端控制器 拦截所有请求-->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

3.字符编码过滤器

<!--3.字符编码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</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>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

4.rest风格URL

 <!--4.使用rest风格URL,将页面普通的post请求转为指定的delte或者put请求-->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

5.创建springmvc配置文件:DispatherServlet-servlet.xml

如果我们没有在配置文件中指定springmvc的配置文件位置。默认就是web-inf下的DispatherServlet-servlet.xml。

1.springmvc的组件扫描器

   <!--1.springMVC的配置文件,包含网站的跳转逻辑,配置-->
    <!--禁用掉默认的过滤规则-->
    <context:component-scan base-package="com.xiaoqi" >
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

2.springmvc的视图解析器

<!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

3.两个标准配置

1.处理静态资源的执行器
2.处理异步请求的注解驱动

 <!--两个标准配置-->
    <!--1.处理静态资源-->
    <mvc:default-servlet-handler/>
    <!--2.能支持springmvc更高级的一些功能,比如jsr303校验,快捷的ajax请求-->
    <mvc:annotation-driven/>

6.创建spring配置文件

1.开启组件扫描

 <!--开启组件扫描-->
    <context:component-scan base-package="com.xiaoqi" use-default-filters="false">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

2.引入外部资源文件。配置数据源

<!--引入外部资源文件-->
    <context:property-placeholder location="classpath:dbcp.properties"/>  
<!--2.声明数据源-->
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxActive" value="${jdbc.max}"/>
    </bean>

3.创建SqlSessionFactory,声明SqlSessionFactoryBean

<!--3.声明SqlSessionFactoryBean类,这个类内部创建SqlSessionFactory对象的-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定mybatis的连接的数据源信息-->
        <property name="dataSource" ref="dataSource"/>
        <!--指定mybatis主配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

4、配置扫描器,扫描dao层,创建dao层对象到spring容器中

<!--4配置扫描器,扫描dao 创建dao的代理对象放到ioc容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定sqlSessionFactory对象的id-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.xiaoqi.dao"/>
    </bean>

5.配置事务管理器

  <!--
        5.创建事务管理器
    -->
    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
        <!--注入数据源-->
        <property name="dataSource" ref="dataSource"/>
    </bean>

6.配置切入点表达式

 <aop:config >
        <!--切入点表达式-->
        <aop:pointcut expression="execution(* com.xiaoqi.service..*(..))" id="txPoint"/>
        <!--配置事务增强-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
    </aop:config>

    <!--配置事务增强,事务如何切入-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!--所有方法都是事务方法-->
            <tx:method name="*"/>
            <!--以get开始的所有方法-->
            <tx:method name="get" read-only="true"/>
        </tx:attributes>
    </tx:advice>

7.加入可以批量执行的sqlSession

<!--配置一个可以执行批量的sqlsession-->
    <bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
        <constructor-arg name="executorType" value="BATCH" />
    </bean>

7.创建mybatis配置文件

1.设置别名

  <!--设置别名-->
    <typeAliases>
        <!--name:实体类所在的包名-->
        <package name="com.xiaoqi.domain"/>
    </typeAliases>

2.引入分页插件

1.在pom文件中加入分页插件依赖

 <!--分页插件-->
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.0</version>
  </dependency>

2.在mybatis中引入插件

<!--分页插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

3.设置映射别名

 <!--设置映射别名-->
    <mappers>
        <!--注册在这个包下的所有mapper映射文件-->
        <package name="com.xiaoqi.dao"/>
    </mappers>

8.搭建逆向工程
1.加入pom文件依赖

 <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.6</version>
        <!--插件的依赖-->
        <dependencies>
          <!--逆向工程核心依赖-->
          <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>
          </dependency>
        </dependencies>

        <configuration>
          <!--配置文件的位置-->
          <configurationFile>GeneratorMybatis.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
      </plugin>
2.创建逆向工程必须的xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <classPathEntry location="D:\javaTools\Webjar\Mybatisjar\mysql-connector-java-5.1.40-bin.jar"/>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--jdbc连接信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/ssm_crud"
                        userId="root"
                        password="140489lu">
        </jdbcConnection>

        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--指定javaBean的生成位置-->
        <javaModelGenerator targetPackage="com.xiaoqi.domain"
                            targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--指定sql映射文件生成的位置-->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!--指定dao的生成位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.xiaoqi.dao"
                             targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!--指定每个表的生成策略-->
        <table  tableName="t_emp" domainObjectName="Employee" >

        </table>
        <table tableName="t_dept" domainObjectName="Department">

        </table>

    </context>
</generatorConfiguration>

3.将逆向工程生成的文件进行分层管理
image.png
8.搭建测试环境
1.创建一个测试类,我们使用的是spring中自带的测试版本spring-test
加入spring-test依赖

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>

2.在测试类上使用@ContextConfigration注解来引入spring配置文件
并且使用@RunWith注解指定spring测试用例版本

// 下边两个注解是spring的测试模块,注意版本要一致 必须要加入spring-test依赖
@RunWith(SpringJUnit4ClassRunner.class)
// 使用单元测试引入spring主配置文件
@ContextConfiguration(locations = {"classpath:springconfig.xml"})
public class MyTest {
3.我们就可以直接在测试类中使用spring容器中已经注册的组件了<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22082810/1629686841850-cd136a07-8245-4e08-a43f-4260bf109cdc.png#clientId=ue48dc6e0-d95c-4&from=paste&height=402&id=u3b2e2a35&margin=%5Bobject%20Object%5D&name=image.png&originHeight=402&originWidth=925&originalType=binary&ratio=1&size=49302&status=done&style=none&taskId=u33a306be-8b3a-45ef-8f8e-fb37a0ccb59&width=925)<br />基于此,ssm环境搭建完成