Vue+SSM+Element-Ui实现前后端分离(2)

  前言:后台使用ssm搭建,对以前学习知识的一个回顾,与此同时来发现自己不足。这里主要采用配置文件方式进行,有部分注解。

  目标:搭建ssm框架,并测试成功;(其中也有aop切面的编写

 一、开发工具

  IDEA2018.2.4_X64MYSQL8.0.11,TOMCAT9.0.22,MAVEN3.5.3,JDK1.8.0_144

二、ssm框架搭建

  项目结构图

        

 1、配置文件(这里不多说,里面有详细注释

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 
  3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5   <modelVersion>4.0.0</modelVersion>
  6 
  7   <groupId>com.wzz</groupId>
  8   <artifactId>SSM</artifactId>
  9   <version>1.0-SNAPSHOT</version>
 10   <packaging>war</packaging>
 11 
 12   <name>SSM Maven Webapp</name>
 13   <!-- FIXME change it to the project's website -->
 14   <url>http://www.example.com</url>
 15 
 16   <properties>
 17     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 18     <maven.compiler.source>1.8</maven.compiler.source>
 19     <maven.compiler.target>1.8</maven.compiler.target>
 20     <spring.version>5.0.2.RELEASE</spring.version>
 21     <slf4j.version>1.6.6</slf4j.version>
 22     <log4j.version>1.2.12</log4j.version>
 23     <shiro.version>1.2.3</shiro.version>
 24     <mysql.version>8.0.11</mysql.version>
 25     <mybatis.version>3.4.5</mybatis.version>
 26   </properties>
 27 
 28   <dependencies>
 29     <!--Spring提供的对AspectJ框架的整合-->
 30     <dependency>
 31       <groupId>org.aspectj</groupId>
 32       <artifactId>aspectjweaver</artifactId>
 33       <version>1.6.8</version>
 34     </dependency>
 35     <!--Spring的面向切面编程,提供AOP(面向切面编程)的实现-->
 36     <dependency>
 37       <groupId>org.springframework</groupId>
 38       <artifactId>spring-aop</artifactId>
 39       <version>${spring.version}</version>
 40     </dependency>
 41 
 42     <!--Spring IOC的基础实现,包含访问配置文件、创建和管理bean等-->
 43     <dependency>
 44       <groupId>org.springframework</groupId>
 45       <artifactId>spring-beans</artifactId>
 46       <version>${spring.version}</version>
 47     </dependency>
 48     <!--在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,
 49       有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持-->
 50     <dependency>
 51       <groupId>org.springframework</groupId>
 52       <artifactId>spring-context</artifactId>
 53       <version>${spring.version}</version>
 54     </dependency>
 55     <!--Spring context的扩展支持,用于MVC方面-->
 56     <dependency>
 57       <groupId>org.springframework</groupId>
 58       <artifactId>spring-context-support</artifactId>
 59       <version>${spring.version}</version>
 60     </dependency>
 61     <!--Spring的核心工具包-->
 62     <dependency>
 63       <groupId>org.springframework</groupId>
 64       <artifactId>spring-core</artifactId>
 65       <version>${spring.version}</version>
 66     </dependency>
 67     <!--spring的jdbc包-->
 68     <dependency>
 69       <groupId>org.springframework</groupId>
 70       <artifactId>spring-jdbc</artifactId>
 71       <version>${spring.version}</version>
 72     </dependency>
 73     <!--为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理-->
 74     <dependency>
 75       <groupId>org.springframework</groupId>
 76       <artifactId>spring-tx</artifactId>
 77       <version>${spring.version}</version>
 78     </dependency>
 79 
 80     <!--包含Web应用开发时,用到Spring框架时所需的核心类,
 81       包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类-->
 82     <dependency>
 83       <groupId>org.springframework</groupId>
 84       <artifactId>spring-web</artifactId>
 85       <version>${spring.version}</version>
 86     </dependency>
 87     <!--包含SpringMVC框架相关的所有类。
 88     包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。
 89     当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类-->
 90     <dependency>
 91       <groupId>org.springframework</groupId>
 92       <artifactId>spring-webmvc</artifactId>
 93       <version>${spring.version}</version>
 94     </dependency>
 95     <!--对JUNIT等测试框架的简单封装-->
 96     <dependency>
 97       <groupId>org.springframework</groupId>
 98       <artifactId>spring-test</artifactId>
 99       <version>${spring.version}</version>
100     </dependency>
101     <!--servlet-->
102     <dependency>
103       <groupId>javax.servlet</groupId>
104       <artifactId>servlet-api</artifactId>
105       <version>2.5</version>
106       <scope>provided</scope>
107     </dependency>
108 
109     <!--mysql驱动包-->
110     <dependency>
111       <groupId>mysql</groupId>
112       <artifactId>mysql-connector-java</artifactId>
113       <version>${mysql.version}</version>
114     </dependency>
115     <!--mybatis-->
116     <dependency>
117       <groupId>org.mybatis</groupId>
118       <artifactId>mybatis</artifactId>
119       <version>${mybatis.version}</version>
120     </dependency>
121     <!--mybatis与spring整合需要的包 -->
122     <dependency>
123       <groupId>org.mybatis</groupId>
124       <artifactId>mybatis-spring</artifactId>
125       <version>1.3.0</version>
126     </dependency>
127 
128     <!--mybatis分页插件-->
129     <dependency>
130       <groupId>com.github.pagehelper</groupId>
131       <artifactId>pagehelper</artifactId>
132       <version>5.1.10</version>
133     </dependency>
134 
135     <!--c3p0-->
136     <dependency>
137       <groupId>c3p0</groupId>
138       <artifactId>c3p0</artifactId>
139       <version>0.9.1.2</version>
140       <type>jar</type>
141       <scope>compile</scope>
142     </dependency>
143 
144     <!--spring推荐的json转化包-->
145     <!--jackson-->
146     <dependency>
147       <groupId>com.fasterxml.jackson.core</groupId>
148       <artifactId>jackson-databind</artifactId>
149       <version>2.9.0</version>
150     </dependency>
151     <dependency>
152       <groupId>com.fasterxml.jackson.core</groupId>
153       <artifactId>jackson-core</artifactId>
154       <version>2.9.0</version>
155     </dependency>
156     <dependency>
157       <groupId>com.fasterxml.jackson.core</groupId>
158       <artifactId>jackson-annotations</artifactId>
159       <version>2.9.0</version>
160     </dependency>
161 
162     <!--阿里巴巴的json转化包-->
163     <!--fastjson-->
164     <dependency>
165       <groupId>com.alibaba</groupId>
166       <artifactId>fastjson</artifactId>
167       <version>1.1.37</version>
168     </dependency>
169 
170 
171     <!--浏览器工具类-->
172     <dependency>
173       <groupId>eu.bitwalker</groupId>
174       <artifactId>UserAgentUtils</artifactId>
175       <version>1.20</version>
176     </dependency>
177 
178     <!-- 日志相关包 -->
179     <dependency>
180       <groupId>log4j</groupId>
181       <artifactId>log4j</artifactId>
182       <version>${log4j.version}</version>
183     </dependency>
184     <dependency>
185       <groupId>org.slf4j</groupId>
186       <artifactId>slf4j-api</artifactId>
187       <version>${slf4j.version}</version>
188     </dependency>
189     <dependency>
190       <groupId>org.slf4j</groupId>
191       <artifactId>slf4j-log4j12</artifactId>
192       <version>${slf4j.version}</version>
193     </dependency>
194 
195     <dependency>
196       <groupId>junit</groupId>
197       <artifactId>junit</artifactId>
198       <version>4.11</version>
199       <scope>compile</scope>
200     </dependency>
201   </dependencies>
202 
203   <build>
204     <finalName>SSM</finalName>
205     <!--编译时,使得java包下的.properties和.xml文件包含在类路径下,方便配置扫描mapper的xml文件-->
206     <resources>
207       <resource>
208         <directory>src/main/java</directory>
209         <includes>
210           <include>**/*.properties</include>
211           <include>**/*.xml</include>
212         </includes>
213         <filtering>false</filtering>
214       </resource>
215     </resources>
216 
217     <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
218       <plugins>
219         <plugin>
220           <artifactId>maven-clean-plugin</artifactId>
221           <version>3.1.0</version>
222         </plugin>
223         <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
224         <plugin>
225           <artifactId>maven-resources-plugin</artifactId>
226           <version>3.0.2</version>
227         </plugin>
228         <plugin>
229           <artifactId>maven-compiler-plugin</artifactId>
230           <version>3.8.0</version>
231         </plugin>
232         <plugin>
233           <artifactId>maven-surefire-plugin</artifactId>
234           <version>2.22.1</version>
235         </plugin>
236         <plugin>
237           <artifactId>maven-war-plugin</artifactId>
238           <version>3.2.2</version>
239         </plugin>
240         <plugin>
241           <artifactId>maven-install-plugin</artifactId>
242           <version>2.5.2</version>
243         </plugin>
244         <plugin>
245           <artifactId>maven-deploy-plugin</artifactId>
246           <version>2.8.2</version>
247         </plugin>
248       </plugins>
249     </pluginManagement>
250   </build>
251 </project>
pom.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:aop="http://www.springframework.org/schema/aop"
 5        xmlns:tx="http://www.springframework.org/schema/tx"
 6        xmlns:context="http://www.springframework.org/schema/context"
 7        xsi:schemaLocation="http://www.springframework.org/schema/beans
 8          http://www.springframework.org/schema/beans/spring-beans.xsd
 9          http://www.springframework.org/schema/tx
10          http://www.springframework.org/schema/tx/spring-tx.xsd
11          http://www.springframework.org/schema/aop
12          http://www.springframework.org/schema/aop/spring-aop.xsd
13          http://www.springframework.org/schema/context
14          http://www.springframework.org/schema/context/spring-context.xsd">
15 
16     <!--开启注解扫描,因为spring和springMVC是父子容器,但是它们有各自独立性,这里排除Controller层,如果不排除,都全部扫描,就可能会出现Controller的方法无法拦截、Bean被多次加载等问题;-->
17     <context:component-scan base-package="com.wzz">
18         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
19     </context:component-scan>
20     <!--spring整合mybatis-->
21     <context:property-placeholder location="classpath:db.properties"/>
22     <!--配置连接池-->
23     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
24         <property name="driverClass" value="${jdbc.driver}"/>
25         <property name="jdbcUrl" value="${jdbc.url}"/>
26         <property name="user" value="${jdbc.userName}"/>
27         <property name="password" value="${jdbc.password}"/>
28         <property name="initialPoolSize" value="${jdbc.c3p0.initialPoolSize}"/>
29         <property name="maxPoolSize" value="${jdbc.c3p0.maxPoolSize}"/>
30         <property name="minPoolSize" value="${jdbc.c3p0.minPoolSize}"/>
31         <property name="maxIdleTime" value="${jdbc.c3p0.maxIdleTime}"/>
32     </bean>
33     <!--配置SqlSessionFactory对象-->
34     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
35         <property name="dataSource" ref="dataSource"/>
36         <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
37         <property name="mapperLocations" value="classpath:com/wzz/mapper/*.xml"/>
38         <!--配置mybatis分页插件-->
39         <property name="plugins">
40             <array>
41                 <bean class="com.github.pagehelper.PageInterceptor">
42                     <property name="properties">
43                         <props>
44                             <prop key="helperDialect">mysql</prop>
45                             <prop key="reasonable">true</prop>
46                         </props>
47                     </property>
48                 </bean>
49             </array>
50         </property>
51     </bean>
52     <!--配置接口所在的包-->
53     <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
54         <property name="basePackage" value="com.wzz.mapper"/>
55     </bean>
56     <!--配置spring框架声明式事务管理-->
57     <!--配置事务管理器-->
58     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
59         <property name="dataSource" ref="dataSource"/>
60     </bean>
61     <!--配置事务通知-->
62     <tx:advice id="txAdvice" transaction-manager="transactionManager">
63         <!--事务的属性-->
64         <tx:attributes>
65             <!--SUPPORTS代表支持当前事务,如果当前没有事务,就以非事务方式执行。-->
66             <tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
67             <!--DEFAULT代表以数据库的隔离级别-->
68             <tx:method name="*" isolation="DEFAULT"/>
69         </tx:attributes>
70     </tx:advice>
71     <!--配置Aop增强-->
72     <aop:config>
73         <!--配置切入点表达式-->
74         <!--* *..*.*(..)      修饰符(可省略)   返回类型  包.包....包.类.方法.(参数)-->
75         <aop:pointcut id="pt" expression="execution(* com.wzz.service.impl.*.*(..))"/>
76         <!--建立事务与切入点之间的关系-->
77         <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
78     </aop:config>
79 </beans>
applicationContext.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:aop="http://www.springframework.org/schema/aop"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xmlns:mvc="http://www.springframework.org/schema/mvc"
 7        xsi:schemaLocation="http://www.springframework.org/schema/beans
 8          http://www.springframework.org/schema/beans/spring-beans.xsd
 9          http://www.springframework.org/schema/mvc
10          http://www.springframework.org/schema/mvc/spring-mvc.xsd
11          http://www.springframework.org/schema/aop
12          http://www.springframework.org/schema/aop/spring-aop.xsd
13          http://www.springframework.org/schema/context
14          http://www.springframework.org/schema/context/spring-context.xsd">
15     <!--springMVC值扫描controller-->
16     <context:component-scan base-package="com.wzz.controller"/>
17 
18     <!--配置日志切面-->
19     <aop:config>
20         <aop:pointcut id="pt" expression="execution(* com.wzz.controller.*.*(..))"/>
21         <!--日志切面-->
22         <aop:aspect id="" ref="sysAccessLogAspect">
23             <!--前置通知-->
24             <aop:before method="doBefore" pointcut-ref="pt"></aop:before>
25             <!--后置通知-->
26             <aop:after-returning method="doAfter" pointcut-ref="pt"></aop:after-returning>
27         </aop:aspect>
28     </aop:config>
29 
30     <!--视图解析器
31         这里不需要视图解析器,因为不处理jsp,或者html,咱们是前后端分离,后端只负责返回数据即可-->
32     <!--<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
33     <!--<property name="prefix" value="/WEB-INF/pages/"/>-->
34     <!--<property name="suffix" value=".jsp"/>-->
35     <!--</bean>-->
36     <!--&lt;!&ndash;过滤静态资源&ndash;&gt;-->
37     <!--<mvc:resources mapping="/css/**" location="/css/"/>-->
38     <!--<mvc:resources mapping="/images/**" location="/images/"/>-->
39     <!--<mvc:resources mapping="/js/**" location="/js/"/>-->
40 
41     <!--springMVC框架流程
42     1、 用户发起请求到前端控制器(DispatcherServlet),前端控制器没有能力处理业务逻辑;
43     2、 通过HandlerMapping查找模型(Controller、Handler);
44     3、 返回执行链,执行链包含了2部分内容,Handler对象以及拦截器(组);
45     4、 通过HandlerAdapter执行模型(Handler)
46     5、 适配器调用Handler对象处理业务逻辑;
47     6、 模型处理完业务逻辑,返回ModelAndView对象,view不是真正的视图对象,而是视图名称;
48     7、 将ModelAndView对象返回给前端控制器;
49     8、 前端控制器通过视图名称经过视图解析器查找视图对象;
50     9、 返回视图对象;
51     10、前端控制器渲染视图;
52     11、返回给前端控制器;
53     12、前端控制器将视图(html、json、xml、Excel)返回给用户;-->
54 
55 
56     <!--开启springMVC注解支持-->
57     <mvc:annotation-driven/>
58 </beans>
springMVC.xml

  这里我当时有一个疑问,springMVC.xml为什么要配置注解驱动?现在我知道了,你知道吗?   <-_->

  不错的解释  https://blog.csdn.net/weixin_42529699/article/details/88085405

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!--别名配置   对model包下的所有起一个别名,默认是它的类名(不分大小写)-->
 7     <typeAliases>
 8         <package name="com.wzz.model"/>
 9     </typeAliases>
10 </configuration>
sqlMapConfig.xml
 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=[%c] - %m%n
 6 log4j.appender.File =org.apache.log4j.RollingFileAppender
 7 log4j.appender.File.File = logs/SSM.log
 8 log4j.appender.File.MaxFileSize = 10MB
 9 log4j.appender.File.Threshold = ALL
10 log4j.appender.File.layout =org.apache.log4j.PatternLayout
11 log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-ddHH\\\:mm\\\:ss}][%c]%m%n
12 log4j.logger.java.sql.ResultSet=DEBUG
13 log4j.logger.java.sql.Connection=DEBUG
14 log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.properties
 1 jdbc.driver=com.mysql.cj.jdbc.Driver
 2 jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=GMT%2B8&useSSL=false
 3 jdbc.userName=wzz
 4 jdbc.password=521125
 5 #---------------------------------------------------------
 6 # c3p0反空闲设置,防止8小时失效问题28800
 7 #---------------------------------------------------------
 8 #idleConnectionTestPeriod要小于MySQL的wait_timeout
 9 #If true, an operation will be performed at every connection checkout to verify that the connection is valid.
10 jdbc.c3p0.testConnectionOnCheckout=false
11 #If true, an operation will be performed asynchronously at every connection checkin to verify that the connection is valid.
12 jdbc.c3p0.testConnectionOnCheckin=true
13 #If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out connections, every this number of seconds.
14 jdbc.c3p0.idleConnectionTestPeriod=3600
15 #---------------------------------------------------------
16 # c3p0连接池配置
17 #---------------------------------------------------------
18 #initialPoolSize, minPoolSize, maxPoolSize define the number of Connections that will be pooled.
19 #Please ensure that minPoolSize <= maxPoolSize.
20 #Unreasonable values of initialPoolSize will be ignored, and minPoolSize will be used instead.
21 jdbc.c3p0.initialPoolSize=10
22 jdbc.c3p0.minPoolSize=10
23 jdbc.c3p0.maxPoolSize=50
24 #maxIdleTime defines how many seconds a Connection should be permitted to go unused before being culled from the pool.
25 jdbc.c3p0.maxIdleTime=3600
db.properties
 1 <!DOCTYPE web-app PUBLIC
 2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
 4 
 5 <web-app>
 6   <display-name>Archetype Created Web Application</display-name>
 7   <!--配置spring的监听器,默认加载WEB-INF目录下的applicationContext.xml配置文件-->
 8   <listener>
 9     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
10   </listener>
11   <!--设置配置文件的路径-->
12   <context-param>
13     <param-name>contextConfigLocation</param-name>
14     <param-value>classpath:applicationContext.xml</param-value>
15   </context-param>
16   <!--配置前段控制器-->
17   <servlet>
18     <servlet-name>dispatcherServlet</servlet-name>
19     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
20     <!--加载springMVC.xml配置文件-->
21     <init-param>
22       <param-name>contextConfigLocation</param-name>
23       <param-value>classpath:springMVC.xml</param-value>
24     </init-param>
25     <!--contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,servlet可以配置多个,加载顺序按照load-on-startup的值,值越小,servlet的优先级越高,就越先被加载-->
26     <load-on-startup>1</load-on-startup>
27   </servlet>
28   <servlet-mapping>
29     <servlet-name>dispatcherServlet</servlet-name>
30     <url-pattern>/</url-pattern>
31   </servlet-mapping>
32   <!--解决中文乱码过滤器-->
33   <filter>
34     <filter-name>characterEncodingFilter</filter-name>
35     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
36     <init-param>
37       <param-name>encoding</param-name>
38       <param-value>UTF-8</param-value>
39     </init-param>
40   </filter>
41   <filter-mapping>
42     <filter-name>characterEncodingFilter</filter-name>
43     <url-pattern>/*</url-pattern>
44   </filter-mapping>
45 </web-app>
web.xml

   2、源码文件(按结构图,从上往下出场

 1 package com.wzz.aspect;
 2 
 3 import org.aspectj.lang.JoinPoint;
 4 import org.springframework.stereotype.Component;
 5 
 6 /**
 7  * @ClassName SysAccessLogAspect
 8  * @Description TODO 系统访问日志切面类
 9  * @Author wangZhenZhong
10  * Version 1.0
11  **/
12 @Component
13 public class SysAccessLogAspect {
14 
15     public void doBefore(JoinPoint jp){
16         System.out.println("前置通知执行啦");
17     }
18 
19     public void doAfter(JoinPoint jp){
20         System.out.println("后置通知执行啦");
21     }
22 }
SysAccessLogAspect.java
 1 package com.wzz.controller;
 2 
 3 import com.wzz.service.IUserService;
 4 import org.springframework.beans.factory.annotation.Autowired;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.ResponseBody;
 8 
 9 import java.util.Map;
10 
11 /**
12  * @ClassName UserController
13  * @Description TODO 用户控制层
14  * @Author AZhen
15  * Version 1.0
16  **/
17 @Controller
18 public class UserController {
19     @Autowired
20     private IUserService userService;
21 
22     @RequestMapping("/test")
23     @ResponseBody
24     public Map queryUserList(){
25         System.out.println("controller层执行啦");
26         Map<String, Object> resultMap = userService.queryUserList();
27         return resultMap;
28     }
29 }
UserController.java
 1 package com.wzz.mapper;
 2 
 3 import com.wzz.model.User;
 4 
 5 import java.util.List;
 6 
 7 /**
 8  * @ClassName UserMapper
 9  * @Description TODO 用户持久层接口
10  * @Author AZhen
11  * Version 1.0
12  **/
13 public interface UserMapper {
14     List<User> queryUserList();
15 }
UserMapper.java
 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.wzz.mapper.UserMapper">
 6     <!--因为在sqlMapConfig.xml中配置了别名,所以直接写user就可以-->
 7     <select id="queryUserList" resultType="user">
 8         select * from tbUser
 9     </select>
10 </mapper>
UserMapper.xml 
 1 package com.wzz.model;
 2 
 3 import java.io.Serializable;
 4 
 5 /**
 6  * @ClassName User
 7  * @Description TODO  用户类
 8  * @Author AZhen
 9  * Version 1.0
10  **/
11 public class User implements Serializable {
12     private String uid;    //uid
13     private String userName;   //用户名
14     private String password;    //密码
15     private String name;      //姓名
16     private Integer age;    //年龄
17     private Integer sex;    //性别
18 
19     public String getUid() {
20         return uid;
21     }
22 
23     public void setUid(String uid) {
24         this.uid = uid;
25     }
26 
27     public String getUserName() {
28         return userName;
29     }
30 
31     public void setUserName(String userName) {
32         this.userName = userName;
33     }
34 
35     public String getPassword() {
36         return password;
37     }
38 
39     public void setPassword(String password) {
40         this.password = password;
41     }
42 
43     public String getName() {
44         return name;
45     }
46 
47     public void setName(String name) {
48         this.name = name;
49     }
50 
51     public Integer getAge() {
52         return age;
53     }
54 
55     public void setAge(Integer age) {
56         this.age = age;
57     }
58 
59     public Integer getSex() {
60         return sex;
61     }
62 
63     public void setSex(Integer sex) {
64         this.sex = sex;
65     }
66 
67     @Override
68     public String toString() {
69         return "User{" +
70                 "uid='" + uid + '\'' +
71                 ", userName='" + userName + '\'' +
72                 ", password='" + password + '\'' +
73                 ", name='" + name + '\'' +
74                 ", age=" + age +
75                 ", sex=" + sex +
76                 '}';
77     }
78 }
User.java
 1 package com.wzz.service.impl;
 2 
 3 import com.wzz.mapper.UserMapper;
 4 import com.wzz.model.User;
 5 import com.wzz.service.IUserService;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8 
 9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12 
13 /**
14  * @ClassName UserServiceImpl
15  * @Description TODO  用户业务层实现类
16  * @Author AZhen
17  * Version 1.0
18  **/
19 @Service
20 public class UserServiceImpl implements IUserService {
21     @Autowired
22     private UserMapper userMapper;
23     @Override
24     public Map<String,Object> queryUserList() {
25         System.out.println("service执行啦");
26         List<User> userList = userMapper.queryUserList();
27         System.out.println("调用了mapper层");
28         Map<String,Object> resultMap=new HashMap<>();
29         resultMap.put("userList",userList);
30         return resultMap;
31     }
32 }
UserServiceImpl.java
 1 package com.wzz.service;
 2 
 3 import java.util.Map;
 4 
 5 /**
 6  * @ClassName IUserService
 7  * @Description TODO 用户业务层接口
 8  * @Author AZhen
 9  * Version 1.0
10  **/
11 public interface IUserService {
12     Map<String,Object> queryUserList();
13 }
IUserService.java

  sql脚本仅结构,没有数据,自行添加

 1 /*
 2  Navicat Premium Data Transfer
 3 
 4  Source Server         : ssm
 5  Source Server Type    : MySQL
 6  Source Server Version : 80011
 7  Source Host           : localhost:3306
 8  Source Schema         : ssm
 9 
10  Target Server Type    : MySQL
11  Target Server Version : 80011
12  File Encoding         : 65001
13 
14  Date: 02/08/2019 08:24:19
15 */
16 
17 SET NAMES utf8mb4;
18 SET FOREIGN_KEY_CHECKS = 0;
19 
20 -- ----------------------------
21 -- Table structure for tbuser
22 -- ----------------------------
23 DROP TABLE IF EXISTS `tbuser`;
24 CREATE TABLE `tbuser`  (
25   `id` int(11) NOT NULL AUTO_INCREMENT,
26   `uId` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
27   `userName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
28   `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
29   `uName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
30   `age` int(11) NULL DEFAULT NULL,
31   `sex` int(11) NULL DEFAULT NULL,
32   PRIMARY KEY (`id`) USING BTREE
33 ) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
34 
35 SET FOREIGN_KEY_CHECKS = 1;
tbUser.sql

三、测试

  1、Tomcat配置

  若没有此工具栏,直接点击视图(View),勾选工具栏(Toolbar)即可

        

  点击配置,添加本地Tomcat

        

       

   点击Deployment,选择+  Artifact  选择war,或者 war exploded(热部署配置选择的,)

       

       

  应用,确定即可

  至此,就可以进行测试了(成功返回了数据

  

  控制台情况,测试没问题

       

       

  至此,完成了ssm搭建,有不足之处,老铁们多多指正,谢谢<-_->

   

猜你喜欢

转载自www.cnblogs.com/supwang-learn-enjoy-success/p/11283734.html