<p>用SSM框架已经有一段时间了,但都没有完整地搭建过一次工程。前段时间比较有时间就自己试着搭建了一下,差不多都是用的最新的spring版本了,然后就在这个基础上做了很多的实验测试。最近想着还是记录一下整个搭建的过程,以便于自己日后参考。所以就重新翻新了一下,为了写得尽可能地详细点所以内容有点多。</p>

GitHub的源码地址:SSMDemo GitHub源码

我是用的idea这个软件搭建的,我也一直使用的这个软件,非常好用,很适合做Java的朋友。

1.创建一个maven的web工程。

为了方便我尽可能地上截图了。

创建maven的web工程

项目名称

配置maven

上面的操作就完成了创建工程的基本操作了。

2.创建工程的包结构

创建好各层的测试类和常规的配置文件

整个工程的包结构就创建完成了。

3.导包,这是非常重要的一步,需要将我们使用的spring、springMVC和MyBatis的相关包都导进来,直接使用maven依赖。

直接上pom.xml的源码:

  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.viking.SSDemo</groupId>
  6. <artifactId>SSMDemo</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>war</packaging>
  9. <name>SSMDemo Maven Webapp</name>
  10. <!-- FIXME change it to the project's website -->
  11. <url>http://www.example.com</url>
  12. <properties>
  13. <!--spring版本号,5.0.0RELEASE是2017年9月发布的新版本-->
  14. <spring.version>5.0.0.RELEASE</spring.version>
  15. <!--mybatis版本号,3.4.5是2017年8月发布的新版本-->
  16. <mybatis.version>3.4.5</mybatis.version>
  17. <!--<slf4j.version>1.7.25</slf4j.version>-->
  18. <slf4j.version>1.7.25</slf4j.version>
  19. <log4j.version>1.2.17</log4j.version>
  20. </properties>
  21. <dependencies>
  22. <dependency>
  23. <groupId>junit</groupId>
  24. <artifactId>junit</artifactId>
  25. <version>4.11</version>
  26. <scope>test</scope>
  27. </dependency>
  28. <!--spring核心包——Start-->
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-core</artifactId>
  32. <version>${spring.version}</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework</groupId>
  36. <artifactId>spring-web</artifactId>
  37. <version>${spring.version}</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework</groupId>
  41. <artifactId>spring-oxm</artifactId>
  42. <version>${spring.version}</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework</groupId>
  46. <artifactId>spring-tx</artifactId>
  47. <version>${spring.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework</groupId>
  51. <artifactId>spring-jdbc</artifactId>
  52. <version>${spring.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.springframework</groupId>
  56. <artifactId>spring-webmvc</artifactId>
  57. <version>${spring.version}</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.springframework</groupId>
  61. <artifactId>spring-aop</artifactId>
  62. <version>${spring.version}</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>org.springframework</groupId>
  66. <artifactId>spring-context-support</artifactId>
  67. <version>${spring.version}</version>
  68. </dependency>
  69. <dependency>
  70. <groupId>org.springframework</groupId>
  71. <artifactId>spring-test</artifactId>
  72. <version>${spring.version}</version>
  73. <scope>test</scope>
  74. </dependency>
  75. <!--spring核心包——End-->
  76. <!--MyBatis核心包-->
  77. <dependency>
  78. <groupId>org.mybatis</groupId>
  79. <artifactId>mybatis</artifactId>
  80. <version>${mybatis.version}</version>
  81. </dependency>
  82. <dependency>
  83. <groupId>com.github.pagehelper</groupId>
  84. <artifactId>pagehelper</artifactId>
  85. <version>4.1.6</version>
  86. </dependency>
  87. <dependency>
  88. <groupId>tk.mybatis</groupId>
  89. <artifactId>mapper</artifactId>
  90. <version>3.3.8</version>
  91. </dependency>
  92. <!--mybatis/spring包-->
  93. <dependency>
  94. <groupId>org.mybatis</groupId>
  95. <artifactId>mybatis-spring</artifactId>
  96. <version>1.3.1</version>
  97. </dependency>
  98. <!--javaEE版本8.0-->
  99. <dependency>
  100. <groupId>javax</groupId>
  101. <artifactId>javaee-api</artifactId>
  102. <version>8.0</version>
  103. <scope>provided</scope>
  104. </dependency>
  105. <!--mysql数据库的jdbc连接包-->
  106. <dependency>
  107. <groupId>mysql</groupId>
  108. <artifactId>mysql-connector-java</artifactId>
  109. <!--新版本使用最多的是6.0.6 但在我的配置中无法使用该版本,报一个很无解的异常-->
  110. <version>5.1.39</version>
  111. </dependency>
  112. <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
  113. <dependency>
  114. <groupId>commons-dbcp</groupId>
  115. <artifactId>commons-dbcp</artifactId>
  116. <version>1.4</version>
  117. </dependency>
  118. <!--jstl标签包-->
  119. <dependency>
  120. <groupId>jstl</groupId>
  121. <artifactId>jstl</artifactId>
  122. <version>1.2</version>
  123. </dependency>
  124. <!--日志文件管理包——logStart-->
  125. <dependency>
  126. <groupId>log4j</groupId>
  127. <artifactId>log4j</artifactId>
  128. <version>${log4j.version}</version>
  129. </dependency>
  130. <dependency>
  131. <groupId>org.slf4j</groupId>
  132. <artifactId>slf4j-log4j12</artifactId>
  133. <version>${slf4j.version}</version>
  134. <!--<scope>test</scope>-->
  135. </dependency>
  136. <dependency>
  137. <groupId>org.slf4j</groupId>
  138. <artifactId>slf4j-api</artifactId>
  139. <version>${slf4j.version}</version>
  140. </dependency>
  141. <!--日志文件管理包——logEnd-->
  142. <!--格式化对象,方便输出日志-->
  143. <dependency>
  144. <groupId>com.alibaba</groupId>
  145. <artifactId>fastjson</artifactId>
  146. <version>1.2.42</version>
  147. </dependency>
  148. <dependency>
  149. <groupId>org.codehaus.jackson</groupId>
  150. <artifactId>jackson-mapper-asl</artifactId>
  151. <version>1.9.13</version>
  152. </dependency>
  153. <!--文件上传组件包-->
  154. <dependency>
  155. <groupId>commons-fileupload</groupId>
  156. <artifactId>commons-fileupload</artifactId>
  157. <version>1.3.3</version>
  158. </dependency>
  159. <dependency>
  160. <groupId>commons-io</groupId>
  161. <artifactId>commons-io</artifactId>
  162. <version>2.6</version>
  163. </dependency>
  164. <dependency>
  165. <groupId>commons-codec</groupId>
  166. <artifactId>commons-codec</artifactId>
  167. <version>1.11</version>
  168. </dependency>
  169. </dependencies>
  170. <build>
  171. <finalName>SSMDemo</finalName>
  172. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  173. <plugins>
  174. <plugin>
  175. <artifactId>maven-clean-plugin</artifactId>
  176. <version>3.0.0</version>
  177. </plugin>
  178. <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  179. <plugin>
  180. <artifactId>maven-resources-plugin</artifactId>
  181. <version>3.0.2</version>
  182. </plugin>
  183. <plugin>
  184. <artifactId>maven-compiler-plugin</artifactId>
  185. <version>3.7.0</version>
  186. </plugin>
  187. <plugin>
  188. <artifactId>maven-surefire-plugin</artifactId>
  189. <version>2.20.1</version>
  190. </plugin>
  191. <plugin>
  192. <artifactId>maven-war-plugin</artifactId>
  193. <version>3.2.0</version>
  194. </plugin>
  195. <plugin>
  196. <artifactId>maven-install-plugin</artifactId>
  197. <version>2.5.2</version>
  198. </plugin>
  199. <plugin>
  200. <artifactId>maven-deploy-plugin</artifactId>
  201. <version>2.8.2</version>
  202. </plugin>
  203. </plugins>
  204. </pluginManagement>
  205. </build>
  206. </project>

然后等待idea自动下载一堆jar的包,如果没有自动下载的可以点这里:

所有的包下载完成后控制台会有提示的。

*4.配置spring、spring和MyBatis的整合配置文件,最重要的一步也是最麻烦的一步同样也是最难的一步。不过不要怕,我们一步一步慢慢来。

这里内容有点多,就不多说啥了,直接粘代码,需要的复制过去就OK了。

spring-mybatis.xml文件源码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx.xsd">
  12. <!--加载配置文件-->
  13. <context:property-placeholder location="classpath:config/jdbc.properties"/>
  14. <!--配置数据源-->
  15. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  16. <property name="driverClassName" value="${jdbc.driver}"/>
  17. <property name="url" value="${jdbc.url}"/>
  18. <property name="username" value="${jdbc.user}"/>
  19. <property name="password" value="${jdbc.password}"/>
  20. </bean>
  21. <!--spring和mybatis整合-->
  22. <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  23. <property name="dataSource" ref="dataSource"/>
  24. <property name="typeAliasesPackage" value="com.**.model"/>
  25. <property name="mapperLocations" value="classpath*:mapper/UserMapper.xml"/>
  26. <!--<property name="configLocation" value="classpath:config/mybatis-config.xml"/>-->
  27. </bean>
  28. <!--扫描mapper接口包-->
  29. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  30. <property name="basePackage" value="com.**.mapper"/>
  31. <property name="sqlSessionFactoryBeanName" >
  32. <idref bean="SqlSessionFactory"/>
  33. </property>
  34. </bean>
  35. <!--service实现类扫描-->
  36. <context:component-scan base-package="com.**.service"/>
  37. <!--事务管理-->
  38. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  39. <property name="dataSource" ref="dataSource"/>
  40. </bean>
  41. <tx:annotation-driven transaction-manager="transactionManager"/>
  42. </beans>

spring-mvc.xml源码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. <!--启用spring的一些annotation -->
  13. <context:annotation-config/>
  14. <!--注册驱动-->
  15. <mvc:annotation-driven>
  16. <mvc:message-converters register-defaults="true">
  17. <!-- 配置Fastjson支持 -->
  18. <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
  19. <property name="supportedMediaTypes">
  20. <list>
  21. <value>application/json;charset=UTF-8</value>
  22. </list>
  23. </property>
  24. <property name="features">
  25. <list>
  26. <!--<value>WriteMapNullValue</value>-->
  27. <value>WriteDateUseDateFormat</value>
  28. <value>QuoteFieldNames</value>
  29. </list>
  30. </property>
  31. </bean>
  32. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  33. <property name="supportedMediaTypes">
  34. <list><value>text/html;charset=UTF-8</value></list>
  35. </property>
  36. </bean>
  37. </mvc:message-converters>
  38. </mvc:annotation-driven>
  39. <!--<mvc:default-servlet-handler/>-->
  40. <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
  41. <context:component-scan base-package="com.ssm.controller">
  42. <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  43. </context:component-scan>
  44. <!--配置视图解析器-->
  45. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  46. <property name="prefix" value="/WEB-INF/jsp/"/>
  47. <property name="suffix" value=".jsp"/>
  48. </bean>
  49. <mvc:resources mapping="/lib/**" location="/lib"/>
  50. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
  51. <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
  52. <!--<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
  53. <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>-->
  54. <!--<property name="prefix" value="/WEB-INF/jsp/"/><!–设置JSP文件的目录位置–>-->
  55. <!--<property name="suffix" value=".jsp"/>-->
  56. <!--</bean>-->
  57. <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
  58. <bean id="multipartResolver"
  59. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  60. <!-- 默认编码 -->
  61. <property name="defaultEncoding" value="utf-8"/>
  62. <!-- 文件大小最大值 -->
  63. <property name="maxUploadSize" value="10485760000"/>
  64. <!-- 内存中的最大值 -->
  65. <property name="maxInMemorySize" value="40960"/>
  66. </bean>
  67. </beans>

web.xml文件也是需要配置的,源码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  6. version="3.0">
  7. <display-name>Archetype Created Web Application</display-name>
  8. <!--spring和mybatis的配置文件-->
  9. <context-param>
  10. <param-name>contextConfigLocation</param-name>
  11. <param-value>classpath:/config/spring-mybatis.xml</param-value>
  12. </context-param>
  13. <!-- 日志记录 -->
  14. <context-param>
  15. <!-- 日志配置文件路径 -->
  16. <param-name>log4jConfigLocation</param-name>
  17. <param-value>classpath:config/log4j.properties</param-value>
  18. </context-param>
  19. <context-param>
  20. <param-name>log4jRefreshInterval</param-name>
  21. <param-value>60000</param-value>
  22. </context-param>
  23. <!-- Spring字符集过滤器 -->
  24. <filter>
  25. <filter-name>SpringEncodingFilter</filter-name>
  26. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  27. <init-param>
  28. <param-name>encoding</param-name>
  29. <param-value>UTF-8</param-value>
  30. </init-param>
  31. <init-param>
  32. <param-name>forceEncoding</param-name>
  33. <param-value>true</param-value>
  34. </init-param>
  35. </filter>
  36. <filter-mapping>
  37. <filter-name>SpringEncodingFilter</filter-name>
  38. <url-pattern>/*</url-pattern>
  39. </filter-mapping>
  40. <!--spring监听器-->
  41. <listener>
  42. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  43. </listener>
  44. <!--防止spring内存溢出监听器-->
  45. <listener>
  46. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  47. </listener>
  48. <!-- springMVC核心配置 -->
  49. <servlet>
  50. <servlet-name>spring</servlet-name>
  51. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  52. <init-param>
  53. <param-name>contextConfigLocation</param-name>
  54. <param-value>
  55. classpath:config/spring-mvc.xml
  56. </param-value>
  57. </init-param>
  58. <load-on-startup>1</load-on-startup>
  59. </servlet>
  60. <servlet-mapping>
  61. <servlet-name>spring</servlet-name>
  62. <url-pattern>/</url-pattern>
  63. </servlet-mapping>
  64. <!--需要访问js文件时使用-->
  65. <!--<servlet-mapping>-->
  66. <!--<servlet-name>default</servlet-name>-->
  67. <!--<url-pattern>*.js</url-pattern>-->
  68. <!--</servlet-mapping>-->
  69. </web-app>

log4j相信大家都不陌生,在项目中我们常常会用到日志,因此非常有必要配置一下日志信息。

log4j.properties源码如下:

  1. log4j.rootLogger = DEBUG,Console,File
  2. log4j.appender.Console = org.apache.log4j.ConsoleAppender
  3. #log4j.appender.Console.Target = System.out
  4. log4j.appender.Console.layout = org.apache.log4j.PatternLayout
  5. log4j.appender.Console.layout.ConversionPattern = %5p %d %C: %m%n
  6. #每天打印一个日志文件
  7. log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.File.File=E:/logs/SSMDemo.log
  9. log4j.appender.File.Encoding=UTF-8
  10. #打印所有级别的日志信息
  11. log4j.appender.File.Threshold = ALL
  12. log4j.appender.File.layout = org.apache.log4j.PatternLayout
  13. log4j.appender.File.layout.ConversionPattern =%d{ABSOLUTE} %5p %c{1}\:%L - %m%n
  14. log4j.logger.com.opensymphony=ERROR
  15. log4j.logger.org.springframework=ERROR
  16. log4j.logger.org.apache=INFO
  17. log4j.logger.java.sql.Connection=INFO
  18. log4j.logger.java.sql.PreparedStatement=INFO
  19. log4j.logger.java.sql.ResultSet=INFO
  20. log4j.logger.java.sql.Statement=INFO

jdbc也是必不可少的一部分,毕竟数据都是来源于数据库的嘛。

jdbc.properties源码如下:

  1. #开发环境
  2. jdbc.driver=com.mysql.jdbc.Driver
  3. jdbc.url=jdbc:mysql://localhost:3306/mydatabase_test
  4. jdbc.user=your username
  5. jdbc.password=your password

到这里我们的配置文件就算说完了(当然这是最基础的需要,SSM的功能十分强大,还可以嵌入很多很多的功能...)

5.依葫芦画瓢,编写各层的功能类即可,controller层主要写http请求的接口方法,service主要写各种业务操作算法等,mapper层也可以称为dao层(我的习惯是写成mapper层)主要是写映射到数据库的方法接口,**Mapper.xml文件主要是写mapper层中的接口功能的SQL语句实现。这样的分层管理应该可以兼容各种大大小小的项目了。

下面也贴上我的工程中各层的测试代码。

model实体类:

  1. package com.ssm.model;
  2. /**
  3. * created by viking on 2018/07/04
  4. * user实体类
  5. */
  6. public class User {
  7. private int id;
  8. private String name;
  9. private int age;
  10. private String sex;
  11. public User() {
  12. }
  13. public int getId() {
  14. return id;
  15. }
  16. public void setId(int id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public int getAge() {
  26. return age;
  27. }
  28. public void setAge(int age) {
  29. this.age = age;
  30. }
  31. public String getSex() {
  32. return sex;
  33. }
  34. public void setSex(String sex) {
  35. this.sex = sex;
  36. }
  37. @Override
  38. public String toString() {
  39. return "User{" +
  40. "id=" + id +
  41. ", name='" + name + '\'' +
  42. ", age=" + age +
  43. ", sex='" + sex + '\'' +
  44. '}';
  45. }
  46. }

controller层:

  1. package com.ssm.controller;
  2. import com.ssm.model.User;
  3. import com.ssm.service.UserService;
  4. import org.apache.log4j.Logger;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import java.util.List;
  10. /**
  11. * created by viking on 2018/07/04
  12. * controller层接口类
  13. */
  14. @RestController
  15. @RequestMapping("user")
  16. public class UserController {
  17. @Autowired
  18. private UserService userService;
  19. Logger log = Logger.getLogger(UserController.class);
  20. @RequestMapping("select")
  21. @ResponseBody
  22. public Object userTest(int id){
  23. System.out.println("测试成功~~"+id);
  24. List<User> user = userService.getUser(id);
  25. System.out.println(user.toString());
  26. log.info(user);
  27. return user;
  28. }
  29. @RequestMapping("addUser")
  30. public Object insertUser(int id,String name,int age,String sex){
  31. userService.insertUser(id,name,age,sex);
  32. return "OK";
  33. }
  34. @RequestMapping("selectAll")
  35. public Object selectAll(){
  36. return userService.selectAll();
  37. }
  38. @RequestMapping("update")
  39. public Object update(){
  40. return userService.update();
  41. }
  42. }

service层(service层一般都是比较复杂的,因此我习惯分成接口和实现类两部分)接口:

  1. package com.ssm.service;
  2. import com.ssm.model.User;
  3. import java.util.List;
  4. /**
  5. * created by viking on 2018/07/04
  6. * 业务层接口
  7. */
  8. public interface UserService {
  9. List<User> getUser(int id);
  10. void insertUser(int id, String name, int age, String sex);
  11. List<User> selectAll();
  12. Object update();
  13. }

service层实现类:

  1. package com.ssm.service.impl;
  2. import com.ssm.mapper.UserMapper;
  3. import com.ssm.model.User;
  4. import com.ssm.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. /**
  11. * created by viking on 2018/07/04
  12. * 业务层接口实现类
  13. */
  14. @Service
  15. public class UserServiceImpl implements UserService {
  16. @Autowired
  17. private UserMapper userMapper;
  18. public List<User> getUser(int id) {
  19. Map map = new HashMap();
  20. map.put("id",id);
  21. return userMapper.getUser(map);
  22. }
  23. public void insertUser(int id, String name, int age, String sex) {
  24. Map param = new HashMap();
  25. param.put("id",id);param.put("name",name);
  26. param.put("age",age);param.put("sex",sex);
  27. userMapper.insertUser(param);
  28. }
  29. public List<User> selectAll() {
  30. return userMapper.selectAll();
  31. }
  32. public Object update() {
  33. Map param = new HashMap();
  34. param.put("total",10);
  35. param.put("name","测试一");
  36. userMapper.update(param);
  37. return "OK";
  38. }
  39. }

mapper层(dao层)接口:

  1. package com.ssm.mapper;
  2. import com.ssm.model.User;
  3. import org.apache.ibatis.annotations.Param;
  4. import java.util.List;
  5. import java.util.Map;
  6. /**
  7. * created by viking on 2018/07/04
  8. * dao层接口
  9. */
  10. public interface UserMapper {
  11. List<User> getUser(@Param("param") Map map);
  12. void insertUser(@Param("param") Map param);
  13. List<User> selectAll();
  14. void update(@Param("param") Map param);
  15. }

**Mapper.xml MaBatsis映射文件配置文件,相当于mapper层接口的实现类了:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ssm.mapper.UserMapper">
  6. <select id="getUser" parameterType="java.util.Map" resultType="com.ssm.model.User">
  7. SELECT *
  8. FROM user
  9. where id =#{param.id}
  10. </select>
  11. <insert id="insertUser" parameterType="java.util.Map">
  12. INSERT INTO user (id,name,age,sex) values(#{param.id},#{param.name},#{param.age},#{param.sex})
  13. </insert>
  14. <select id="selectAll" resultType="com.ssm.model.User">
  15. SELECT * FROM USER
  16. </select>
  17. <update id="update" parameterType="java.util.Map">
  18. UPDATE USER SET id=id-#{param.total},age=age+#{param.total}
  19. WHERE name=#{param.name}
  20. </update>
  21. </mapper>

为了方便大家拷下代码后可以直接启动,我把数据库的sql语句和数据也贴上,我用的是mysql数据库:

  1. /*
  2. Navicat MySQL Data Transfer
  3. Source Server : mysql
  4. Source Server Version : 50173
  5. Source Host : localhost:3306
  6. Source Database : mydatabase_test
  7. Target Server Type : MYSQL
  8. Target Server Version : 50173
  9. File Encoding : 65001
  10. Date: 2018-06-15 15:41:23
  11. */
  12. SET FOREIGN_KEY_CHECKS=0;
  13. -- ----------------------------
  14. -- Table structure for user
  15. -- ----------------------------
  16. DROP TABLE IF EXISTS `user`;
  17. CREATE TABLE `user` (
  18. `id` int(11) NOT NULL,
  19. `name` varchar(20) DEFAULT NULL,
  20. `age` int(11) DEFAULT NULL,
  21. `sex` varchar(10) DEFAULT NULL,
  22. PRIMARY KEY (`id`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  24. -- ----------------------------
  25. -- Records of user
  26. -- ----------------------------
  27. INSERT INTO `user` VALUES ('2', '测试二', '22', '男');
  28. INSERT INTO `user` VALUES ('3', '小二郎', '18', '男');
  29. INSERT INTO `user` VALUES ('4', '二郎', '18', '男');
  30. INSERT INTO `user` VALUES ('5', '马英', '26', '女');
  31. INSERT INTO `user` VALUES ('6', '王尼玛', '30', '男');
  32. INSERT INTO `user` VALUES ('7', '张三疯', '109', '男');
  33. INSERT INTO `user` VALUES ('8', '欧阳翻天', '76', '女');
  34. INSERT INTO `user` VALUES ('9', '上官', '16', '女');
  35. INSERT INTO `user` VALUES ('10', '李响', '30', '男');
  36. INSERT INTO `user` VALUES ('11', '测试一', '0', '女');

我本地的数据库表结构截图:

到这里就完全结束了,整个工程就可以直接运行了。

6.顺带提一下在idea中配置tomcat的过程(懂的朋友可以直接忽略~)

配置好了之后再将tomcat添加到server中:

好了~tomcat的配置也完成了。

7.下面贴上我的本机运行效果图:

tomcat成功启动:

通过浏览器访问localhost:

再测试下我们的SSM工程里测试类的正常工作截图:

控制台的输出和日志信息:

该有的输出都是正常的,再看一下我们保存到本地的日志文件:

成功地保存了我们工程的输出日志。

一晚上坚持一口气写完整个日志,到这里终于完美地结束了,如果大家觉得在下写的记录有帮助,可以给下支持和订阅哦!

附上GitHub的源码地址:SSMDemo GitHub源码

如果有不对的地方,欢迎各位大佬指教,如果有不懂的地方,也欢迎大家留言,我们一起讨论。

转载:https://blog.csdn.net/Mr__Viking/article/details/80919340

最新版的SSM框架spring5.0搭建教程(附源码)相关推荐

  1. java ssm框架论文,基于SSM框架的个人博客系统(源码+论文)

    需求分析 使用spring+springmvc+mybatis实现一个个人博客系统,可以记录个人生活日志, 进行技术分享, 并且浏览者可以对博客进行阅览与评论 本站提供了其他类型的 在线个人博客网站源 ...

  2. SSM框架基于web的房屋租售管理系统源码+论文第二稿+软件环境+包安装调试

    项目名称 SSM框架基于web的房屋租售管理系统源码 系统说明 用户: 1.首页:系统前台首页使用分块的结构设计进行展示,分别对系统的logo.轮播图.登录注册.新闻公告.最新房源.菜单功能.房屋类型 ...

  3. 毕业设计-基于SSM框架大学教务管理平台项目开发实战教程(附源码)

    文章目录 1.项目简介 2.项目收获 3.项目技术栈 4.测试账号 5.项目部分截图 6.常见问题 毕业设计-基于SSM框架大学教务管理平台项目实战教程-附源码 课程源码下载地址:https://do ...

  4. javaweb课程设计-基于SSM框架的疫情数据统计分析系统源码+数据库,可以进行疫情数据录入、疫情数据查询、图表展示

    疫情数据统计分析系统 完整代码下载地址:基于SSM框架的疫情数据统计分析系统源码+数据库 介绍 疫情数据统计分析系统是一个基于SSM框架的网页端系统,项目中实现的功能如下:用户访问网站可以浏览全国疫情 ...

  5. 云开发喝酒神器2.0微信小程序源码 附搭建教程【源码好优多】

    简介 云开发喝酒神器2.0微信小程序源码 附搭建教程 微信小程序云开发喝酒神器2.0微信小程序源码(带流量主),云开发小程序无法服务器即可搭建,配置有安装文档教程. 下方资源地址 云开发喝酒神器2.0 ...

  6. 基于SSM实现的人力资源管理系统【附源码】(毕设)

    一.项目简介 本项目是一套基于SSM实现的人力资源管理系统 或 人事管理系统 或 企业管理系统 或 HR管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者. 详细介绍 ...

  7. 基于SSM实现的物流管理系统【附源码】(毕设)

    一.项目简介 本项目是一套基于SSM实现的物流管理系统 或 物流配送系统 或 快递物流系统 或 快递管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者. 详细介绍了物 ...

  8. java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码、数据库)

    java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm ...

  9. java计算机毕业设计ssm学生宿舍管理系统15pjb(附源码、数据库)

    java计算机毕业设计ssm学生宿舍管理系统15pjb(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...

最新文章

  1. 太厉害了!目前 Redis 可视化工具最全的横向评测
  2. windows 搭建kms服务器激活_自建KMS激活服务器的两种方法
  3. django-500错误页面
  4. 学习 |《神经网络与深度学习》的讲义
  5. 第六周作业----测试自动化工具
  6. apache kafkac系列lient发展-java
  7. [生活日记] 社会真的这么乱?尼姑也行骗,道德何在
  8. 蚂蚁课堂视频笔记+笔记对应源码+思维导图下载地址
  9. linux开发板挂载nfs服务
  10. sqlserver 2017 windows版本下载
  11. Tic-Tac-Toe可能棋局搜索的实现(python)
  12. 织梦会员中心注册登录
  13. 电脑重装系统后在Win11控制面板怎么打开?
  14. 同级最强!天玑8200实测成绩放出,iQOO Neo7 SE神机配神U
  15. 基于以太坊ICO的安全合约架构
  16. Python 图片批量处理(图片批量rename,图片批量resize,图片批量split,图片批量concat)
  17. http://39.98.219.132 题库标准答案(题库序号:615)之二分查找
  18. 小飞鱼通达二开 ERP发送通达OA消息接口开发(图文)
  19. numpy的sum函数的axis和keepdim参数详解
  20. 16~235和0~255

热门文章

  1. 无法打开文件“python35_d.lib”
  2. ERROR: Cannot unpack file C:\Users\admin\AppData\Local\Temp\pip-unpack-yo8pmupp\simple.htm (download
  3. Floyd算法及其应用
  4. Maven修改默认仓库为阿里云仓库
  5. [UWP]使用Picker实现一个简单的ColorPicker弹窗
  6. codevs4203山区建小学
  7. 暑假集训-个人赛第六场
  8. 文本框获取和失去焦点默认值问题
  9. [Grooy]List, Map and Range习题
  10. C++之类与对象(2)