SSM框架整合
文章目录
建项目
采用idea新建maven-webapp项目。
加依赖
Spring依赖
<!-- ====================Spring============================= -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
SpringMVC依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<!--在properties设置版本号,下面进行引用,可以方便维护-->
<spring.version>5.2.0.RELEASE</spring.version>
<jackson.version>2.10.0</jackson.version>
</properties>
<!-- ====================SpringMVC============================= -->
<!--Spring Web MVC依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version><!--引用spring版本-->
</dependency>
<!-- servlet API支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- JSTL支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<type>jar</type>
</dependency>
<!-- 校验器 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
<!--json转换-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
Mybatis依赖
<!-- ====================mybatis============================= -->
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--mybatis集成到spring-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.3</version>
</dependency>
<!--阿里德鲁伊连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!--mysql连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<!--事务管理-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
mybatis.generator插件
在pom.xml中配置插件代码。
此插件可以自动生成mapper。
<!-- mybatis插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
</dependencies>
</plugin>
建包
在main下面,建java和resources文件夹。
点击maven的刷新,直至两个包变色
再在java下面建需要的包名。
执行命令行命令:mkdir controller service dao entity common component
springmvc配置
配置web.xml
自动生成的xml版本低,因此我们更改web-app头部。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>SSM集成</display-name>
<!-- 监听器,在tomcat启动时加载spring容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 更改applicationContext.xml文件的位置到resources里面 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 前端控制器,默认请求处理-->
<servlet>
<servlet-name>ssm</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ssm</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 编码过滤器-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
</web-app>
配置ssm-servlet.xml
WEB-INF下新建ssm-servlet.xml文件
WEB-INF下新建文件夹,放置静态资源。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--包扫描,路径为controller-->
<context:component-scan base-package="com.alter.ssm.controller"/>
<!--viewResolver: 内容协商视图解析器,根据请求自动返回jsp或者json-->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="viewResolvers">
<list>
<!-- home => /WEB-INF/page/home.jsp -->
<!--内部资源视图解析器,JSP-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
</list>
</property>
<property name="defaultViews">
<list>
<!--解析json-->
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
</list>
</property>
</bean>
<!--启动mvc注解-->
<mvc:annotation-driven/>
<!--静态资源映射-->
<!-- mapping:访问路径 location:本地路径-->
<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>
<mvc:resources mapping="/images/**" location="/WEB-INF/images/"/>
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/"/>
<!--文件上传的配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--最大的上传文件总大小 10M-->
<property name="maxUploadSize" value="10485760"/>
<!--最大的上传文件单个大小-->
<property name="maxUploadSizePerFile" value="2097152"/>
</bean>
</beans>
下面进行Spring配置
配置applicationContext.xml
在resources文件夹下新建applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.alibaba.com/schema/stat"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.alibaba.com/schema/stat http://www.alibaba.com/schema/stat.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
<!--开启扫包-->
<context:component-scan base-package="com.alter.ssm"/>
<!--读取配置文件-->
<bean id="configurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:database.properties"/>
</bean>
<!--配置数据源 德鲁伊连接池-->
<bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"/>
</bean>
<!--开启事务-->
<tx:annotation-driven/>
<!--集成mybatis,使用属性代替mybatis-config.xml-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--mybatis的数据源-->
<property name="dataSource" ref="datasource"/>
<!--mybatis的setttings-->
<property name="configuration" >
<bean class="org.apache.ibatis.session.Configuration">
<!--开启驼峰命名转换-->
<property name="mapUnderscoreToCamelCase" value="true"/>
<!--在控制台打印日志-->
<property name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
<!--一级缓存-->
<property name="localCacheScope" value="STATEMENT"/>
</bean>
</property>
<!--类型别名-->
<property name="typeAliasesPackage" value="com.alter.ssm.entity"/>
<!--mapper.xml所在位置-->
<property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
</bean>
<!--将mybatis的mapper映射成springbean-->
<mybatis:scan base-package="com.alter.ssm.dao"/>
</beans>
配置generator.xml
自动生成mapper等代码
在resources文件夹下新建generatorConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="mysqltables" targetRuntime="MyBatis3">
<!--model类生成toString-->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--数据库驱动配置-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/class26"
userId="root"
password="718923">
</jdbcConnection>
<!--java类型转换配置-->
<javaTypeResolver >
<!--不把浮点数转换为BigDecimal-->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- java的模型类 -->
<!-- targetPackage: 生成的类放在哪个包-->
<!-- targetProject: 包所在的位置-->
<javaModelGenerator targetPackage="com.alter.ssm.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--mapper.xml-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--mapper接口-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.alter.ssm.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--schema:数据库 tableName:表名 domainObjectName:模型类名-->
<table schema="class26" tableName="user" domainObjectName="User" >
<!--使得自增ID被返回-->
<generatedKey column="user_id" sqlStatement="select last_insert_id()" identity="true"/>
</table>
<!-- 如果还想要建其他表的mapper,就在这里添加-->
</context>
</generatorConfiguration>
输入命令:mybatis-generator:generate 即可生成代码和各种类
此时生成了dao、entity下的类和mapper下的xml文件
测试
创建UserController
package com.alter.ssm.controller;
import com.alter.ssm.entity.User;
import com.alter.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //表示里面的方法都会转为json
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("getUser")
//@GetMapping等价于@RequestMapping(method = RequestMethod.GET)
public User getUser(int userId){
return userService.findUserById(userId);
}
}
创建UserService
package com.alter.ssm.service;
import com.alter.ssm.entity.User;
public interface UserService {
User findUserById(int userId);
}
创建UserServiceImpl
此时userMapper可能会标红,但是没关系。这是idea对mybatis的支持不够。
package com.alter.ssm.service.impl;
import com.alter.ssm.dao.UserMapper;
import com.alter.ssm.entity.User;
import com.alter.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findUserById(int userId) {
return userMapper.selectByPrimaryKey(userId);
}
}
启动Tomcat,在浏览器输入请求getUser?userId=1 ,即在数据库中查找userId为1的数据。
我的测试网址为: http://localhost:8080/ssmdemo/getUser?userId=1
如果浏览器成功出现数据,证明集成成功!
最后的项目结构为: