SSM=Spring+Spring MVC+MyBatis
1.Spring
核心思想:Bean对象管理+AOP思想
使用配置类文件,主要加载注解有5个:
2.Spring MVC
表现层框架,用spring mvc的方式来整合controller
3.MyBatis
数据层框架,用spring的方式来整合jdbc
具体整合流程:
- spring整合mybatis需要两个配置类,固定写法jdbc+mybatis
- spring整合springmvc需要两个配置类,固定写法servlet+springmvc
基本项目框架:
1. 先建表
2.在domain包下创建实体类,tostring方法只是为了打印对象、调试程序,在实际开发中用处并不大,只需get\set方法即可
3.dao包下创建接口,利用mapper自动代理实现数据层基本操作;这里无需xml映射文件而是依靠注解+配置类实现
4.service包下创建业务层接口和实现类
- 小问题:dao包使用自动代理,无需spring扫描来当作bean管理,因此自动装配时可能会出现警告
- dao包和service包下的接口不属于bean,无需添加注解,(但其实也可以加注解把dao交给spring做bean管理)service实现类下需添加对应bean注解以及用到dao包下的自动装配注解,对dao包下的接口方法进行组合调用并封装
5.controller包下调用业务层接口方法与前端做交互,使用spring mvc框架代替servlet,一个文件就搞定
pom文件配置(10个依赖+tomcat运行插件)
<dependencies>
<!--springmvc坐标依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--导入JDBC坐标依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--导入测试框架依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--导入mybatis坐标依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--导入spring整合mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!--导入数据库连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--导入数据源依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--导入工具包依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--导入servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--导入json依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
<!--加载tomcat7运行插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
接口测试:
- 1.业务层接口使用junit进行测试
- 在test包下的java包下写测试类,自己模拟数据即可---使用test注解可以只运行一个测试方法即可
- 2.表现层接口使用postman进行测试
- 3.添加事务,共三个地方(springconfig里打开事务注解;jdbcconfig里配置事务的bean;业务层接口打开事务注解)
表现层数据封装:
- 为了方便前端人员识别数据与操作,为他们统一了数据格式
- 设置联调协议:作为前后端进行通信的规范书写格式(不一定全用)
- 由后端人员设置统一数据返回结果类,但不是一个死格式,可根据需要自行增减,根据项目组约定,类名可自设
- 具体实现步骤:
- 在controller包下设result类,声明code,data,msg三个变量,以及对应get\set方法,并自由组合成对应的有无参构造方法
- 在controller包下设code类,用来声明各个操作对应的状态码
- 修改controller类,提取返回数据,返回到result类型参数(三元表达式)给到前端人员,前端人员就可以根据状态码来识别数据作用