简介:用springboot基于maven工程,利用三层架构并整合SSM,快速实现一个简易的RESTFUL风格的CRUD业务。
1.环境搭建
因为是springboot,所以项目的搭建非常简便:
新建工程后,选择spring Initializr。
项目的基本结构如下:
HelloApplicaton,class
是程序的入口,只需要运行该主程序,服务就会被开启。
这一系列的自动装配,都得益于上方的注解。不过该注解只会去扫描该类所在包及其子包下的注解,所以这个类的位置如果放的不好,会导致注解无法被读取(可以通过手动配置来指定要扫描的类)。
2.模块简介
Java代码部分,和以前的SSM区别不大。只不过SSM的配置被大大的简化,可以用直接使用注解进行快速开发。
页面资源部分,springboot项目是是分了2块,一个是纯静态资源,如HTML,CSS,js等。而动态的部分,则放在了templates
文件夹中,springboot推荐使用thymeleaf
模板引擎来整合动态数据和静态页面,本质上依然是一个HTML文件。引入thymeleaf依赖后,放在该文件夹中的HTML文件,就可以使用其相关语法,进行数据的展示,流程的控制等(类似于jsp的作用)。
配置文件部分,不必再写繁杂的xml配置,boot提供了一个名为application.properties的全局配置文件,可以在里面进行很多的SSM及服务器的相关配置。(如果想进行以前MVC或Sping的配置,也可以再写专门的配置类。)
除了application.properties,还可以使用application.yml,该文件的功能和前者相同,但是有更简洁的写法,二者配置可以互补,在冲突时,yml优先级更高。
这里使用了引入开发时配置文件的方式,在主配置文件application.yml
中,声明要激活application-dev.yml
而application-dev.yml
,就可以写一些具体的配置了。
pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.三层架构和SSM框架
持久层
由于要使用mybatis连接数据库,所以数据源的设置还是必不可少的。我们直接写在上面提高过的application-dev.yml
中:
配置完后,就可以使用mybatis开发持久层了:
业务层
由于boot帮我们把相关配置都自动配置好了,所以可以直接使用注解进行开发。这里没什么特别的处理,就是简单的调用Spring给我们持久层对象,调用相对应的方法。
控制层
MVC的相关注解,也是可以使用的,不过我们这里使用的RESTFUL风格进行的映射。也就是说,我们对于增删改查,使用的是同一个路径,但是请求该路径的方式是不同的。查找是get,添加是post,修改是put,删除是delete。
但是也可以看出,同样都是查询,有查询个人和查询全部两种,那么怎么区分这两种呢?就是利用URL地址进行传参。这里并不是通过 ?
进行参数的封装,而是使用下级的路径,当成参数,从而再被控制层程序获取,比如查询单人:
当我们输入http://localhost:8080/stu并以get方式访问时,走的就是上面不含任何参数的处理程序(即查询所有)。而如果输入http://localhost:8080/stu/1,此时虽然提交方式还是get,但是URL地址是不一样的,所以可以做出区分。我们只需要使用@PathVariable注解,把URL上的值,给封装到被注解的变量中(图中就是方法的形参 —— id)。
由于form表单只能允许get和post方式提交,所以要使用工具类进行一个欺骗。而这个工具类是springboot帮我们提供好的,只需要在配置文件中开启即刻:
开启后,在相应的表单中,添加一个input标签,属性name取值为_method
,value值为想要提交的方式。
再来看一个查询所有的详细代码:
4.页面展示
首页的功能如下:
数据库数据如下:
查询所有
添加
修改
删除
最后再看一个通过id查询单个记录
我们直接输入
回车后,页面如下,这里直接返回的响应体:
代码如下: