Spring+SpringMVC+Mybatis(SSM) Demo(入门详细步骤)

  菜鸟一枚,刚刚接触Spring不久,前段时间按照网上的demo写了下SSM,发现好多都不懂,好不容易程序能运行,也能出应有的结果,但想再次安全靠自己写一遍,各个步骤完全记不住,因此发一随笔做好记录,方便后续查看。该随笔按我自己的步骤一一记录下来,内容包括SpringMVC的配置,以及mybatis generator自动生成xml配置、entity、dao层等信息。本工程的编辑器用的是IDEA,数据库用的MySQL。

一、新建工程

1、 运行IDEA,选择创建一个新工程,选择maven,创建对应的java web项目。

2、填写GroupId和ArtifactId

3、配置本地maven仓库(我这里已经配置过了,所以显示如下)

更改maven的本地仓库——更改C:\Users\用户名\.m2\setting.xml文件(如果没有该文件,可以去“idea安装目录\plugins\maven\lib\maven3\conf”下复制过来,该目录是在安装idea时选择安装maven插件时自动生成的)中添加<localRepository>本地仓库地址</localRepository>

4、填写工程名

完成工程的创建。

5、为了去除spring等框架版本和jdk版本不兼容问题,在settings里修改工程的jdk版本。

6、更改项目结构

(图中的xml文件都是后续创建的,可以不管)

- java            主Java代码文件夹

  - controller  控制器文件文件夹

  - dao            数据访问层文件夹

  - service        业务逻辑层文件夹

  - entity          实体层文件夹

- resources    资源文件夹(要将此定义为Sources Root,不然classpath不会指向该目录,卡了本菜鸟好久=_=。右键选择Mark directory as-->Sources Root-->显示

  - mapper      mybatis sql文件夹

- webapp      web页面文件夹

  -WEB-INF     web应用的安全目录

- test            测试文件夹

二、Maven包的初始化

1、修改pom.xml配置文件相关jar包的自动导入

参考配置如下:

  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.mycompany.app</groupId>
  8     <artifactId>Demo</artifactId>
  9     <version>1.0-SNAPSHOT</version>
 10     <packaging>war</packaging>
 11 
 12     <name>Demo Maven Webapp</name>
 13     <!-- FIXME change it to the project's website -->
 14     <url>http://maven.apache.org</url>
 15 
 16     <dependencies>
 17         <dependency>
 18             <groupId>junit</groupId>
 19             <artifactId>junit</artifactId>
 20             <version>4.12</version>
 21             <scope>test</scope>
 22         </dependency>
 23         <dependency>
 24             <groupId>org.springframework</groupId>
 25             <artifactId>spring-core</artifactId>
 26             <version>4.3.5.RELEASE</version>
 27         </dependency>
 28         <dependency>
 29             <groupId>org.springframework</groupId>
 30             <artifactId>spring-aop</artifactId>
 31             <version>4.3.5.RELEASE</version>
 32         </dependency>
 33         <dependency>
 34             <groupId>org.springframework</groupId>
 35             <artifactId>spring-orm</artifactId>
 36             <version>4.3.5.RELEASE</version>
 37         </dependency>
 38         <dependency>
 39             <groupId>org.springframework</groupId>
 40             <artifactId>spring-tx</artifactId>
 41             <version>4.3.5.RELEASE</version>
 42         </dependency>
 43         <dependency>
 44             <groupId>org.springframework</groupId>
 45             <artifactId>spring-test</artifactId>
 46             <version>4.3.5.RELEASE</version>
 47         </dependency>
 48         <dependency>
 49             <groupId>org.springframework</groupId>
 50             <artifactId>spring-mock</artifactId>
 51             <version>2.0.8</version>
 52         </dependency>
 53         <dependency>
 54             <groupId>org.springframework</groupId>
 55             <artifactId>spring-jdbc</artifactId>
 56             <version>4.3.5.RELEASE</version>
 57         </dependency>
 58         <dependency>
 59             <groupId>org.springframework</groupId>
 60             <artifactId>spring-context</artifactId>
 61             <version>4.3.5.RELEASE</version>
 62         </dependency>
 63         <dependency>
 64             <groupId>org.springframework</groupId>
 65             <artifactId>spring-context-support</artifactId>
 66             <version>4.3.5.RELEASE</version>
 67         </dependency>
 68         <dependency>
 69             <groupId>org.springframework</groupId>
 70             <artifactId>spring-expression</artifactId>
 71             <version>4.3.5.RELEASE</version>
 72         </dependency>
 73         <!--Spring Web + Spring MVC-->
 74         <dependency>
 75             <groupId>org.springframework</groupId>
 76             <artifactId>spring-web</artifactId>
 77             <version>4.3.1.RELEASE</version>
 78         </dependency>
 79         <dependency>
 80             <groupId>org.springframework</groupId>
 81             <artifactId>spring-webmvc</artifactId>
 82             <version>4.3.1.RELEASE</version>
 83         </dependency>
 84         <dependency>
 85             <groupId>com.github.pagehelper</groupId>
 86             <artifactId>pagehelper</artifactId>
 87             <version>3.7.3</version>
 88         </dependency>
 89         <dependency>
 90             <groupId>com.github.jsqlparser</groupId>
 91             <artifactId>jsqlparser</artifactId>
 92             <version>0.9.1</version>
 93         </dependency>
 94         <!--mysql jdbc-->
 95         <dependency>
 96             <groupId>mysql</groupId>
 97             <artifactId>mysql-connector-java</artifactId>
 98             <version>5.1.38</version>
 99         </dependency>
100         <!--c3p0-->
101         <dependency>
102             <groupId>c3p0</groupId>
103             <artifactId>c3p0</artifactId>
104             <version>0.9.1.2</version>
105         </dependency>
106         <!--NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config-->
107         <!-- https://mvnrepository.com/artifact/jstl/jstl -->
108         <dependency>
109             <groupId>jstl</groupId>
110             <artifactId>jstl</artifactId>
111             <version>1.2</version>
112         </dependency>
113         <!--file upload jar package-->
114         <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
115         <dependency>
116             <groupId>commons-fileupload</groupId>
117             <artifactId>commons-fileupload</artifactId>
118             <version>1.3.1</version>
119         </dependency>
120         <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
121         <dependency>
122             <groupId>commons-io</groupId>
123             <artifactId>commons-io</artifactId>
124             <version>2.4</version>
125         </dependency>
126         <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
127         <dependency>
128             <groupId>commons-lang</groupId>
129             <artifactId>commons-lang</artifactId>
130             <version>2.6</version>
131         </dependency>
132         <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
133         <dependency>
134             <groupId>commons-beanutils</groupId>
135             <artifactId>commons-beanutils</artifactId>
136             <version>1.8.3</version>
137         </dependency>
138         <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
139         <dependency>
140             <groupId>commons-collections</groupId>
141             <artifactId>commons-collections</artifactId>
142             <version>3.2.1</version>
143         </dependency>
144         <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
145         <dependency>
146             <groupId>commons-logging</groupId>
147             <artifactId>commons-logging</artifactId>
148             <version>1.2</version>
149         </dependency>
150         <!-- https://mvnrepository.com/artifact/net.sf.ezmorph/ezmorph -->
151         <dependency>
152             <groupId>net.sf.ezmorph</groupId>
153             <artifactId>ezmorph</artifactId>
154             <version>1.0.6</version>
155         </dependency>
156         <!--json serialize and deserialization-->
157         <!-- 引入fastjson依赖 -->
158         <dependency>
159             <groupId>com.alibaba</groupId>
160             <artifactId>fastjson</artifactId>
161             <version>1.2.12</version>
162         </dependency>
163         <!-- 引入gson依赖 -->
164         <dependency>
165             <groupId>com.google.code.gson</groupId>
166             <artifactId>gson</artifactId>
167             <version>2.6.2</version>
168         </dependency>
169         <!--Base64 加解密-->
170         <!-- https://mvnrepository.com/artifact/net.iharder/base64 -->
171         <dependency>
172             <groupId>net.iharder</groupId>
173             <artifactId>base64</artifactId>
174             <version>2.3.8</version>
175         </dependency>
176         <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
177         <dependency>
178             <groupId>commons-codec</groupId>
179             <artifactId>commons-codec</artifactId>
180             <version>1.10</version>
181         </dependency>
182         <!--log4j-->
183         <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
184         <dependency>
185             <groupId>org.apache.logging.log4j</groupId>
186             <artifactId>log4j-core</artifactId>
187             <version>2.6.2</version>
188         </dependency>
189         <dependency>
190             <groupId>org.jetbrains</groupId>
191             <artifactId>annotations-java5</artifactId>
192             <version>RELEASE</version>
193         </dependency>
194         <!--mybatis 应用mybatis需要导入mybatis,将mybatis和spring整合在一起需要导入mybatis-spring-->
195         <dependency>
196             <groupId>org.mybatis</groupId>
197             <artifactId>mybatis</artifactId>
198             <version>3.3.0</version>
199         </dependency>
200         <dependency>
201             <groupId>org.mybatis</groupId>
202             <artifactId>mybatis-spring</artifactId>
203             <version>1.2.3</version>
204         </dependency>
205         <dependency>
206             <groupId>org.mybatis.generator</groupId>
207             <artifactId>mybatis-generator-core</artifactId>
208             <version>1.3.2</version>
209         </dependency>
210     </dependencies>
211 
212     <build>
213         <finalName>Demo</finalName>
214         <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
215             <plugins>
216                 <plugin>
217                     <artifactId>maven-clean-plugin</artifactId>
218                     <version>3.0.0</version>
219                 </plugin>
220                 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
221                 <plugin>
222                     <artifactId>maven-resources-plugin</artifactId>
223                     <version>3.0.2</version>
224                 </plugin>
225                 <plugin>
226                     <artifactId>maven-compiler-plugin</artifactId>
227                     <version>3.7.0</version>
228                 </plugin>
229                 <plugin>
230                     <artifactId>maven-surefire-plugin</artifactId>
231                     <version>2.20.1</version>
232                 </plugin>
233                 <plugin>
234                     <artifactId>maven-war-plugin</artifactId>
235                     <version>3.2.0</version>
236                 </plugin>
237                 <plugin>
238                     <artifactId>maven-install-plugin</artifactId>
239                     <version>2.5.2</version>
240                 </plugin>
241                 <plugin>
242                     <artifactId>maven-deploy-plugin</artifactId>
243                     <version>2.8.2</version>
244                 </plugin>
245             </plugins>
246         </pluginManagement>
247     </build>
248 </project>
View Code

三、SpringMVC的配置

1、(一般在resource文件夹或者WEB-INF文件夹)新建spring-servlet.xml文件(文件名称一般为“xxx-servlet.xml”),声明SpringMVC框架对控制器、页面、资源的访问。

  a) 启动注解驱动的Spring MVC功能,<mvc:annotation-driven/>

  b) 启动包扫描功能, <context:component-scan base-package="controller"/>

完整的spring-servlet.xml代码如下(除上述两步外,还要补全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:mvc="http://www.springframework.org/schema/mvc"
 5        xmlns:Context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="
 7        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-3.1.xsd
11        http://www.springframework.org/schema/context
12        http://www.springframework.org/schema/context/spring-context-3.1.xsd">
13     <mvc:annotation-driven/>
14     <Context:component-scan base-package="controller"/>
15 </beans>
View Code

2、配置web.xml,并将spring-servlet.xml配置加入进去(若spring-servlet.xml在WEB-INF文件夹下则可以不用加入,本工程是将其放在WEB-INF文件夹下)。

  a) Spring分为多个文件进行分别的配置,其中在<servlet></servlet>中如果没有指定init-param属性,那么系统会自动去WEB-INF寻找文件名为[servlet名]-servlet.xml的spring配置文件。

  若在resource文件夹下:

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-servlet.xml</param-value>
</init-param>
View Code

  b) 配置servlet映射。

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
View Code

 完整的web.xml代码如下(同样要补全头文件,添加欢迎页):

 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 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5          xmlns="http://java.sun.com/xml/ns/javaee"
 6          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 7          version="3.0">
 8     <display-name>Archetype Created Web Application</display-name>
 9     <welcome-file-list>
10         <welcome-file>/index.jsp</welcome-file>
11     </welcome-file-list>
12     <!-- Spring MVC配置 -->
13     <servlet>
14         <servlet-name>spring</servlet-name>
15         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
16         <!--Spring-servlet.xml config
17         <init-param>
18             <param-name>contextConfigLocation</param-name>
19             <param-value>classpath:spring-servlet.xml</param-value>
20         </init-param> -->
21         <!--若在WEB-INF文件夹下,也可以指定目录
22         <init-param>
23             <param-name>contextConfigLocation</param-name>
24             <param-value>/WEB-INF/spring-servlet.xml</param-value>
25         </init-param>-->
26         <!-- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法) -->
27         <load-on-startup>1</load-on-startup>
28     </servlet>
29     <servlet-mapping>
30         <servlet-name>spring</servlet-name>
31         <url-pattern>/</url-pattern>
32     </servlet-mapping>
33 </web-app>
View Code

至此,我们完成了SpringMVC的配置。做一个简单的测试,验证上述步骤是否正确。

1、在controller包下新建HelloController.java

 1 package controller;
 2 
 3 import org.springframework.web.bind.annotation.GetMapping;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.RestController;
 6 
 7 @RestController
 8 @RequestMapping("/hello")
 9 public class HelloController {
10     @GetMapping
11     public String hello() {
12         return "<h1>hello</h1>";
13     }
14 }
View Code

2、配置Tomcat(如果没有安装,则需要先安装Tomcat服务器)

  a) 打开Tomcat配置界面

选择Edit Configurations

  b) 添加local Tomcat

  c) 为其命名(当然也可以不用命名),其他都是默认设置

  d) 部署项目

  e) 选择Tomcat服务器,运行项目

  如果SpringMVC配置无误的话,浏览器会跳到欢迎页。

  然后在地址栏敲入http://localhost:8080/hello,会在页面显示java文件返回的字符串。

四、通过MyBatis Generator自动生成entity、mapper和dao层

1、在test数据库创建student表(本工程应用mysql-font来创建)

2、pom.xml配置插件build节点下加入插件

 1 <!-- *Mapper.xml自动生成的插件-->
 2 <plugin>
 3     <groupId>org.mybatis.generator</groupId>
 4     <artifactId>mybatis-generator-maven-plugin</artifactId>
 5     <version>1.3.2</version>
 6     <configuration>
 7         <verbose>true</verbose>
 8         <overwrite>true</overwrite>
 9     </configuration>
10 </plugin>
View Code

3、在resource文件夹下创建generatorConfig.xml文件,参考配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 3         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
 4 <generatorConfiguration>
 5     <!-- 配置mysql-connector-java的jar包地址 -->
 6     <classPathEntry location="E:\java\maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/> <!--E:/java/maven/repository/mysql/mysql-connector-java/5.1.38/-->
 7     <context id="context1">
 8         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test"
 9                         userId="root" password="root"/><!--数据库连接-->
10         <!--生成Model类存放位置-->
11         <javaModelGenerator targetPackage="entity" targetProject="src/main/java">
12             <property name="enableSubPackages" value="true"/>
13         </javaModelGenerator>
14         <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"><!--生成的mapper文件-->
15             <property name="enableSubPackages" value="true"/>
16         </sqlMapGenerator>
17         <javaClientGenerator targetPackage="dao" targetProject="src/main/java" type="XMLMAPPER"><!--生成的dao层接口)-->
18             <property name="enableSubPackages" value="true"/>
19         </javaClientGenerator>
20         <table schema="" tableName="student" domainObjectName="Student"
21                enableCountByExample="false"
22                enableUpdateByExample="false"
23                enableDeleteByExample="false"
24                enableSelectByExample="false"
25                selectByExampleQueryId="false">
26         </table>
27     </context>
28 </generatorConfiguration>
View Code

这里要首先下载一个mysql-connector-java-5.1.38.jar包,并将其路径写在<classPathEntry location="E:\java\maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/> 

4、配置自动生成启动环境

  a) 同配置Tomcat一样,选择Edit Configurations。

  b) 选择maven,并为其命名,以及配置命令

  c) 运行mybatis-generator,便可以自动生成entity、mapper和dao层,结果如下。可以看到自动生成了三个文件。

 

从而完成了通过MyBatis Generator自动生成entity、mapper和dao层。自动生成的方法不止这一种。

五、Spring和Mybatis的配置

1、在resource文件夹添加mybatis配置文件 spring-mybatis.xml,并配置有关jdbc的内容。

 1     <!-- 配置数据源 -->
 2     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 3         <property name="driverClass" value="com.mysql.jdbc.Driver"/>
 4         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
 5         <property name="user" value="root"/>
 6         <property name="password" value="root"/>
 7         <property name="minPoolSize" value="10"/>
 8         <property name="maxPoolSize" value="100"/>
 9         <property name="acquireIncrement" value="3"/>
10         <property name="acquireRetryAttempts" value="60"/>
11         <property name="acquireRetryDelay" value="1000"/>
12         <property name="autoCommitOnClose" value="false"/>
13         <property name="checkoutTimeout" value="0"/>
14         <property name="idleConnectionTestPeriod" value="120"/>
15         <property name="maxIdleTime" value="60"/>
16         <property name="testConnectionOnCheckin" value="false"/>
17         <property name="maxStatements" value="8"/>
18         <property name="maxStatementsPerConnection" value="5"/>
19         <property name="unreturnedConnectionTimeout" value="25"/>
20     </bean>
View Code

2、mybatis文件配置,配置SqlSessionFactoryBean类,扫描所有mapper文件(这里mapper后续会采用generator自动生成)

1     <!-- mybatis文件配置,配置SqlSessionFactoryBean类,扫描所有mapper文件 -->
2     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
3         <!-- 指定数据源 -->
4         <property name="dataSource" ref="dataSource"/>
5         <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
6     </bean>
View Code

3、spring与mybatis整合配置,配置org.mybatis.spring.mapper.MapperScannerConfigurer类,扫描所有dao

1     <!-- spring与mybatis整合配置,org.mybatis.spring.mapper.MapperScannerConfigurer类,扫描所有dao-->
2     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
3         <property name="basePackage" value="dao"/>
4     </bean>
View Code

4、配置事务管理器

1     <!-- 配置事务管理器 -->
2     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
3         <property name="dataSource" ref="dataSource"/>
4     </bean>
View Code

完整的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        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5     <!-- 配置数据源 -->
 6     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 7         <property name="driverClass" value="com.mysql.jdbc.Driver"/>
 8         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
 9         <property name="user" value="root"/>
10         <property name="password" value="root"/>
11         <property name="minPoolSize" value="10"/>
12         <property name="maxPoolSize" value="100"/>
13         <property name="acquireIncrement" value="3"/>
14         <property name="acquireRetryAttempts" value="60"/>
15         <property name="acquireRetryDelay" value="1000"/>
16         <property name="autoCommitOnClose" value="false"/>
17         <property name="checkoutTimeout" value="0"/>
18         <property name="idleConnectionTestPeriod" value="120"/>
19         <property name="maxIdleTime" value="60"/>
20         <property name="testConnectionOnCheckin" value="false"/>
21         <property name="maxStatements" value="8"/>
22         <property name="maxStatementsPerConnection" value="5"/>
23         <property name="unreturnedConnectionTimeout" value="25"/>
24     </bean>
25     <!-- mybatis文件配置,配置SqlSessionFactoryBean类,扫描所有mapper文件 -->
26     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
27         <!-- 指定数据源 -->
28         <property name="dataSource" ref="dataSource"/>
29         <property name="mapperLocations" value="classpath:mapper/StudentMapper.xml"/>
30     </bean>
31     <!-- spring与mybatis整合配置,org.mybatis.spring.mapper.MapperScannerConfigurer类,扫描所有dao-->
32     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
33         <property name="basePackage" value="dao"/>
34     </bean>
35     <!-- 配置事务管理器 -->
36     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
37         <property name="dataSource" ref="dataSource"/>
38     </bean>
39 </beans>
View Code

 5、添加spring支持(applicationContext.xml),并在spring支持里面将mybatis配置文件进行引入

  a)  配置component所在的包,自动加载需要管理的Bean

<!-- 配置component所在的包,自动加载需要管理的Bean -->
<context:component-scan base-package="service,dao"/>
View Code

  b) 引入spring-mybatis.xml文件

<!-- 引入spring-mybatis.xml文件 -->
<import resource="spring-mybatis.xml"/>
View Code

6、将spring的配置,即applicationContext.xml加载到web.xml文件中

1 <context-param>
2     <param-name>contextConfigLocation</param-name>
3     <param-value>classpath:applicationContext.xml</param-value>
4 </context-param>
View Code

完整的web.xml文件代码如下:

 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 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5          xmlns="http://java.sun.com/xml/ns/javaee"
 6          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 7          version="3.0">
 8     <display-name>Archetype Created Web Application</display-name>
 9     <welcome-file-list>
10         <welcome-file>/index.jsp</welcome-file>
11     </welcome-file-list>
12     <!-- Spring MVC配置 -->
13     <servlet>
14         <servlet-name>spring</servlet-name>
15         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
16         <!--Spring-servlet.xml config
17         <init-param>
18             <param-name>contextConfigLocation</param-name>
19             <param-value>classpath:spring-servlet.xml</param-value>
20         </init-param> -->
21         <!--若在WEB-INF文件夹下,也可以指定目录
22         <init-param>
23             <param-name>contextConfigLocation</param-name>
24             <param-value>/WEB-INF/spring-servlet.xml</param-value>
25         </init-param>-->
26         <!-- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法) -->
27         <load-on-startup>1</load-on-startup>
28     </servlet>
29     <servlet-mapping>
30         <servlet-name>spring</servlet-name>
31         <url-pattern>/</url-pattern>
32     </servlet-mapping>
33     <context-param>
34         <param-name>contextConfigLocation</param-name>
35         <param-value>classpath:applicationContext.xml</param-value>
36     </context-param>
37     <listener>
38         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
39     </listener>
40 </web-app>
View Code

六、创建Demo

1、在service包中创建StudentService接口,代码如下

 1 package service;
 2 
 3 import entity.Student;
 4 
 5 public interface StudentService {
 6     int deleteByPrimaryKey(Integer uid);
 7 
 8     int insert(Student record);
 9 
10     int insertSelective(Student record);
11 
12     Student selectByPrimaryKey(Integer uid);
13 
14     int updateByPrimaryKeySelective(Student record);
15 
16     int updateByPrimaryKey(Student record);
17 }
View Code

2、在service包中创建实现StudentService接口的StudentServiceImpl类,代码如下

 1 package service;
 2 
 3 import dao.StudentMapper;
 4 import entity.Student;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 
 8 @Service
 9 public class StudentServiceImpl implements StudentService {
10     @Autowired
11     private StudentMapper studentMapper;
12 
13     @Override
14     public int deleteByPrimaryKey(Integer uid) {
15         return studentMapper.deleteByPrimaryKey(uid);
16     }
17 
18     @Override
19     public int insert(Student record) {
20         return studentMapper.insert(record);
21     }
22 
23     @Override
24     public int insertSelective(Student record) {
25         return studentMapper.insertSelective(record);
26     }
27 
28     @Override
29     public Student selectByPrimaryKey(Integer uid) {
30         return studentMapper.selectByPrimaryKey(uid);
31     }
32 
33     @Override
34     public int updateByPrimaryKeySelective(Student record) {
35         return studentMapper.updateByPrimaryKeySelective(record);
36     }
37 
38     @Override
39     public int updateByPrimaryKey(Student record) {
40         return studentMapper.updateByPrimaryKey(record);
41     }
42 }
View Code

 3、在controller包中创建StudentController类,代码如下

 1 package controller;
 2 
 3 import com.alibaba.fastjson.JSON;
 4 import entity.Student;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.web.bind.annotation.GetMapping;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RestController;
 9 import service.StudentServiceImpl;
10 
11 import javax.annotation.Resource;
12 
13 @RestController
14 @RequestMapping("/api/Student")
15 public class StudentController {
16     @Resource
17     private StudentServiceImpl studentService;
18 
19     @GetMapping()
20     public String Get() {
21         Student student = studentService.selectByPrimaryKey(1);
22         String jsonResult = JSON.toJSONString(student);
23         return jsonResult;
24     }
25 }
View Code

结果显示如下

从而一个简单的SSM demo就完成了。

猜你喜欢

转载自www.cnblogs.com/heganning/p/9182866.html
今日推荐