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

<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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值