SSM框架整合(Spring+SpringMVC+Mybatis)

简介: SSM框架整合超详细文件版,面向小白搭建,保姆级别,(Spring+SpringMVC+Mybatis)。

1、创建数据库

image.png

2、创建表

image-20220807091756884.png

3、创建maven工程

导入坐标

<dependencies><!--spring相关--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.7</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.0.5.RELEASE</version></dependency><!--servlet和jsp--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version></dependency><!--mybatis相关--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies>

4、编写实体类

package com.xmp.domain;

public class Account {

   private Integer id;

   private String name;

   private Double money;

   public Integer getId() {

       return id;

   }

   public void setId(Integer id) {

       this.id = id;

   }

   public String getName() {

       return name;

   }

   public void setName(String name) {

       this.name = name;

   }

   public Double getMoney() {

       return money;

   }

   public void setMoney(Double money) {

       this.money = money;

   }

}

5、编写Mapper接口

packagecom.xmp.mapper;
importcom.xmp.domain.Account;
importjava.util.List;
publicinterfaceAccountMapper {
publicvoidsave(Accountaccount);
publicList<Account>findAll();
}

6、编写Service接口

packagecom.xmp.service;
importcom.xmp.domain.Account;
importjava.util.List;
publicinterfaceAccountService {
publicvoidsave(Accountaccount);
publicList<Account>findAll();
}

7、编写Service接口实现

package com.xmp.service.impl;

import com.xmp.domain.Account;

import com.xmp.mapper.AccountMapper;

import com.xmp.service.AccountService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service("accountService")

public class AccountServiceImpl implements AccountService {

   @Autowired

   private AccountMapper accountMapper;

   @Override

   public void save(Account account) {

       accountMapper.save(account);

   }

   @Override

   public List<Account> findAll() {

       return accountMapper.findAll();

   }

}

8、编写Controller

packagecom.xmp.controller;
importcom.xmp.domain.Account;
importcom.xmp.service.AccountService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.ResponseBody;
importorg.springframework.web.servlet.ModelAndView;
importjava.util.List;
@Controller@RequestMapping("/account")
publicclassAccountController {
@AutowiredprivateAccountServiceaccountService;
//保存@RequestMapping(value="/save",produces="text/html;charset=UTF-8")
@ResponseBodypublicStringsave(Accountaccount){
accountService.save(account);
return"保存成功";
    }
//查询@RequestMapping("/findAll")
publicModelAndViewfindAll(){
List<Account>accountList=accountService.findAll();
ModelAndViewmodelAndView=newModelAndView();
modelAndView.addObject("accountList",accountList);
modelAndView.setViewName("accountList");
returnmodelAndView;
    }
}

9、编写添加页面

<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><h1>添加账户信息表单</h1><formname="accountForm"action="${pageContext.request.contextPath}/account/save"method="post">账户名称:<inputtype="text"name="name"><br>账户金额:<inputtype="text"name="money"><br><inputtype="submit"value="保存"><br></form></body></html>

10、编写列表页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>

<head>

   <title>Title</title>

</head>

<body>

   <h1>展示账户数据列表</h1>

   <table border="1">

       <tr>

           <th>账户id</th>

           <th>账户名称</th>

           <th>账户金额</th>

       </tr>

       <c:forEach items="${accountList}" var="account">

           <tr>

               <td>${account.id}</td>

               <td>${account.name}</td>

               <td>${account.money}</td>

           </tr>

       </c:forEach>

   </table>

</body>

</html>

11、编写相应配置文件

  • Spring配置文件:applicationContext.xml
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd">

   <!--组件扫描 扫描service和mapper-->

   <context:component-scan base-package="com.xmp">

       <!--排除controller的扫描-->

       <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>

   </context:component-scan>


   <!--加载propeties文件-->

   <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>


   <!--配置数据源信息-->

   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

       <property name="driverClass" value="${jdbc.driver}"></property>

       <property name="jdbcUrl" value="${jdbc.url}"></property>

       <property name="user" value="${jdbc.username}"></property>

       <property name="password" value="${jdbc.password}"></property>

   </bean>


   <!--配置sessionFactory-->

   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

       <property name="dataSource" ref="dataSource"></property>

       <!--加载mybatis核心文件-->

       <property name="configLocation" value="classpath:sqlMapConfig-spring.xml"></property>

   </bean>


   <!--扫描mapper所在的包 为mapper创建实现类-->

   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

       <property name="basePackage" value="com.xmp.mapper"></property>

   </bean>



   <!--声明式事务控制-->

   <!--平台事务管理器-->

   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

       <property name="dataSource" ref="dataSource"></property>

   </bean>


   <!--配置事务增强-->

   <tx:advice id="txAdvice">

       <tx:attributes>

           <tx:method name="*"/>

       </tx:attributes>

   </tx:advice>


   <!--事务的aop织入-->

   <aop:config>

       <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.xmp.service.impl.*.*(..))"></aop:advisor>

   </aop:config>


</beans>

  • SprngMVC配置文件:spring-mvc.xml
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--组件扫描主要扫描controller--><context:component-scanbase-package="com.xmp.controller"></context:component-scan><!--配置mvc注解驱动--><mvc:annotation-driven></mvc:annotation-driven><!--内部资源视图解析器--><beanid="resourceViewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><propertyname="prefix"value="/WEB-INF/pages/"></property><propertyname="suffix"value=".jsp"></property></bean><!--开发静态资源访问权限--><mvc:default-servlet-handler></mvc:default-servlet-handler></beans>
  • MyBatis映射文件:AccountMapper.xml
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.xmp.mapper.AccountMapper"><insertid="save"parameterType="account">insertintoaccountvalues(#{id},#{name},#{money})
</insert><selectid="findAll"resultType="account">select*fromaccount</select></mapper>MyBatis核心文件:sqlMapConfig-spring.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--定义别名--><typeAliases><!--<typeAliastype="com.xmp.domain.Account"alias="account"></typeAlias>--><packagename="com.xmp.domain"></package></typeAliases></configuration>
  • 数据库连接信息文件:jdbc.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssmjdbc.username=rootjdbc.passwords=root
  • Web.xml文件:web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns="http://java.sun.com/xml/ns/javaee"

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">


   <!--spring 监听器-->

   <context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>classpath:applicationContext.xml</param-value>

   </context-param>

   <listener>

       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

   </listener>


   <!--springmvc的前端控制器-->

   <servlet>

       <servlet-name>DispatcherServlet</servlet-name>

       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

       <init-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>classpath:spring-mvc.xml</param-value>

       </init-param>

       <load-on-startup>1</load-on-startup>

   </servlet>

   <servlet-mapping>

       <servlet-name>DispatcherServlet</servlet-name>

       <url-pattern>/</url-pattern>

   </servlet-mapping>


   <!--乱码过滤器-->

   <filter>

       <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>

       <url-pattern>/*</url-pattern>

   </filter-mapping>


</web-app>


  • 日志文件:log4j.xml

#

# Hibernate, Relational Persistence for Idiomatic Java

#

# License: GNU Lesser General Public License (LGPL), version 2.1 or later.

# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.

#


### direct log messages to stdout ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.err

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n


### direct messages to file hibernate.log ###

#log4j.appender.file=org.apache.log4j.FileAppender

#log4j.appender.file.File=hibernate.log

#log4j.appender.file.layout=org.apache.log4j.PatternLayout

#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n


### set log levels - for more verbose logging change 'info' to 'debug' ###


log4j.rootLogger=all, stdout


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
SQL XML Java
424 0
|
11月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
865 12
|
12月前
|
SQL XML Java
MyBatis框架如何处理字符串相等的判断条件。
总的来说,MyBatis框架提供了灵活而强大的机制来处理SQL语句中的字符串相等判断条件。无论是简单的等值判断,还是复杂的条件逻辑,MyBatis都能通过其标签和属性来实现,使得动态SQL的编写既安全又高效。
811 0
|
Oracle 关系型数据库 Java
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
361 5
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
1022 29
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
566 1
持久层框架MyBatisPlus
|
XML Java 数据格式
SpringMVC的XML配置解析-spring18
SpringMVC的XML配置解析-spring18
|
应用服务中间件
从代码角度戳一下springMVC的运行过程-spring16
从代码角度戳一下springMVC的运行过程-spring16