SSM整合

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: SSM框架--详细整合教程SSM表示Spring+SpringMVC+MyBatis三大框架,这里主要总结了三大框架整合的使用。一、基本概念SpringSpring是一个开源框架,兴起于2003年的轻量级Java开发框架。

SSM框架--详细整合教程

SSM表示Spring+SpringMVC+MyBatis三大框架,这里主要总结了三大框架整合的使用。

一、基本概念

  1. Spring

Spring是一个开源框架,兴起于2003年的轻量级Java开发框架。Spring使用最基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和耦合性的角度,任何java应用都可以在Spring中受益。

简单说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  1. SpringMVC

SpringMVC属于SpringFrameWork的后续产品,已经融合SpringWebFlow里面。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

  1. MyBatis

MyBatis本着apache的一个开源项目iBatis。2010年迁移到google code,并改名为MyBatis。MyBatis是一个基于Java的持久层框架。

iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs映射成数据库中的记录.

二、开发环境搭建

如需,可参照:shu_lin的博客-CSDN

三、Maven Web项目创建

如需,可参照:shu_lin的博客-CSDN

四、SSM整合

下面主要是整合部分,环境搭建请看上边连接.

此次整合用了两个配置文件:spring-mybatis.xml.包含了spring和mybatis的配置文件,还有个spring-mvc的配置文件,此外还有两个文件:jdbc.properties和log4j.properties。完整目录结构如下:

img_5645cbb37e2043cc5172b47f1b7e1f45.png

  1. Maven引入需要的JAR包


    <!-- spring版本号 -->
    <spring.version>4.0.2.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.6</mybatis.version>
    <!-- log4j日志文件管理包版本 -->
    <slf4j.version>1.7.7</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <!-- spring核心包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        
        
        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <!-- 映入JSON -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>
    </dependencies>
  1. Spring 与MyBatis的整合

所有需要的JAR包都引入之后,首先进行Spring与MyBatis的整合,然后进行JUnit测试,项目结构图如下:

img_f68e1c080b6e2ae31eb66e8761be345b.png

    1. 建立JDBC属性文件

jdbc.properties

driver=com.mysql.jdbc.Driver>
url=jdbc:mysql://10.221.10.111:8080/db_zsl,
username=demao
password=demao,
initialSize=0,
maxActive=20,
maxIdle=20,
minIdle=1
maxWait=60000

    1. 建立spring-mybatis.xml配置文件

这个文件用于完成spring和mybatis的整合。主要内容:自动扫描、自动注入、配置数据库。

spring-mybatis.xml

    
    <context:component-scan base-package="com.cn.hnust" />
    <!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/cn/hnust/mapping/*.xml"></property>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.cn.hnust.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>
  1. Log4j的配置

具体不用讲解,如需请看以下链接:

http://blog.csdn.net/zhshulin/article/details/37937365

  1. JUnit测试
  • 创建测试用表

DROP TABLE IF EXISTS `user_t`;

CREATE TABLE `user_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(40) NOT NULL,
  `password` varchar(255) NOT NULL,
  `age` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

/*Data for the table `user_t` */

insert  into `user_t`(`id`,`user_name`,`password`,`age`) values (1,'测试','sfasgfaf',24);sql

DROP TABLE IF EXISTS `user_t`;

CREATE TABLE `user_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(40) NOT NULL,
  `password` varchar(255) NOT NULL,
  `age` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

/*Data for the table `user_t` */

insert  into `user_t`(`id`,`user_name`,`password`,`age`) values (1,'测试','sfasgfaf',24);
  • 利用MyBatis Generator自动创建代码

参考

这个用于根据表自动创建实体类、MyBatis映射文件以及DAO接口。习惯将生成的接口改为IUserDao,而不是直接用它生成UserMapper。

  • 建立Service接口和实现类

  • 建立测试类

    
    package org.zsl.testmybatis;
    import javax.annotation.Resource;
    import org.apache.log4j.Logger;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import com.alibaba.fastjson.JSON;
    import com.cn.hnust.pojo.User;
    import com.cn.hnust.service.IUserService;
    
    @RunWith(SpringJUnit4ClassRunner.class)     //表示继承了SpringJUnit4ClassRunner类
    @ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
    public class TestMyBatis {
        private static Logger logger = Logger.getLogger(TestMyBatis.class);
    //  private ApplicationContext ac = null;
        @Resource
        private IUserService userService = null;
        
    //  @Before
    //  public void before() {
    //      ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    //      userService = (IUserService) ac.getBean("userService");
    //  }

    @Test
    public void test1() {
        User user = userService.getUserById(1);
        // System.out.println(user.getUserName());
        // logger.info("值:"+user.getUserName());
        logger.info(JSON.toJSONString(user));
      }
    }

此时测试成功即完成Spring和MyBatis的整合,下面继续整合SpringMVC,待续...

转载自:shu_lin

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
前端开发 Java 应用服务中间件
SSM相关
SSM相关
|
7月前
|
安全 前端开发 Java
SSM
SSM(Spring Security、Spring(Spring Security、Spring MVC和Mybatis)是一个常用的Java Web开发框架,它可以提供安全的访问控制、灵活的模板引擎和强大的数据库操作功能。使用SSM可以快速构建高效、可靠和安全的Web应用程序。 Spring Security提供了一系列安全机制,包括认证、授权和会话管理等,可以保护应用程序免受未经授权的访问。Spring MVC提供了一个强大的Web框架,可以快速构建灵活的Web应用程序。Mybatis是一个流行的数据库操作框架,可以方便地进行数据库操作,并提供了很多有用的功能,例如数据映射和自动更新等。
58 0
|
7月前
|
前端开发 Java 数据库连接
SSM整合~
SSM整合~
|
13天前
|
Java 数据库连接 Spring
SSM整合
SSM整合
|
29天前
|
XML Java 关系型数据库
springboot整合ssm详细讲解
springboot整合ssm详细讲解
|
2月前
|
存储 安全 Java
基于ssm的经典电影推荐网站
基于ssm的经典电影推荐网站
|
12月前
|
XML 存储 JSON
SSM 之 SpringMVC(下)
SSM 之 SpringMVC(下)
49 0
SSM 之 SpringMVC(下)
|
12月前
|
JSON 前端开发 JavaScript
SSM 之 SpringMVC(上)
SSM 之 SpringMVC(上)
49 0
|
Java 数据库连接 Spring
SSM整合(超详细)
新建一个excepition包包下创建所需各个异常类记得继承相应的异常父类,原因:程序运行时遇到相应异常后可以不处理向上抛不继承坏处:以后每个方法都要加上这个类//继承RuntimeException类 public class TestExcepition extends RuntimeException {//区别自定义异常类的编码 public TestExcepition(Integer code) {} }
107 1
SSM整合(超详细)
|
数据安全/隐私保护
基于SSM的教学质量系统
本系统为2020年4月做的项目,基于SSM整合开发。主要包括系部教学工作质量评价、日常教学质量检查、教学检查评价结果分析、学生评教,教师教学信息等,主要分为四个角色。
基于SSM的教学质量系统