SpringBoot整合SSM,不使用.xml配置(一)
说在前头:
(1)GitHub下面有,但是请自行切换分支【GitHub里面或许有无关的注释的代码,请自行忽略】
(2)此作品,纯粹使用SpringBoot整合了SSM,博主有些细节,没有弄上去,可能不会类似于之前的手把手教的样子还请自行理解 ,不过大部分是有的~
(3)此作品,前台交互什么的是很粗糙的(因为博主纯粹是想整合SSM以及与数据库打交道),然后,欢迎大佬指点emmm~~~
项目结构图
(1)创建SpringBoot项目
OK,项目创建成功,当然,为了后面与数据库打交道,那么,需要添加数据库连接的Jar包 以及Junit单元测试等Jar,见下面Pom文件
Pom文件
<?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.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.yun</groupId>
<artifactId>ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ssm</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--小辣椒 setting需要安装组件 此处需要导入Jar包 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</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>
<!--mySql连接-->
<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>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!--MyBatis-Jar包-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!--MyBatis 整合Spring适配包-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--Junit单元测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--thymeleaf 模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 整合JDBC和事务启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools 热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true, 依赖不会传递, 该项目依赖devtools; 之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->
<!--简单来讲就是 B继承A父项目 此特性不会传给子项目 需要子项目重新依赖Jar包-->
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
(2)添加组件Lombox(小辣椒),以及配置Pom文件的Jar为True
emmm~~不知道的可自行百度,是在懒的话,就这么理解吧
Lombox(小辣椒),是一个插件,可以省略自行手写get/set/toString/构造器等方法,只需要在实体类上面加上对应注解即可。提高开发效率。下面是Idea添加组件
@Data相当于@Getter @Setter @RequiredArgsContructor @ToString @EqualsAndHashCode 的合集。
功能介绍
其余的代码简写:
@Setter/@Getter : 自动生成set和get方法
@ToString : 自动生成toString方法
@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自动生成构造方法
@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法
@Value : 用于注解final类
@Builder : 产生复杂的构建器api类
@SneakyThrows : 异常处理(谨慎使用)
@Synchronized : 同步方法安全的转化
@Getter(lazy=true) : 开启懒加载
@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j
@NonNull : 让你不在担忧并且爱上NullPointerException
@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法
OK,组件安装完成,那么,设置Pom里面Lombox 的Jar包为True
(3)创建数据库
CREATE TABLE user (
id varchar(228) NOT NULL,
name varchar(50) DEFAULT NULL,
password varchar(50) DEFAULT NULL,
age int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='SSM测试用户表'
创建完成之后,数据自行添加
(4)修改application.yml文件
先自行,将application文件的后缀名修改为.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/my_springboot_ssm?serverTimezone=UTC
username: root
password: 1234
# druid连接池
druid:
initial-size: 1 #初始化连接数
min-idle: 1 #最小空闲连接
max-active: 20 #最大活动连接
test-on-borrow: true #获取连接时测试是否可用
stat-view-servlet.allow: true #监控页面启动
#热部署:修改后台文件保存后自动重启
devtools:
restart:
enabled: true
spring-boot-devtools: src/main/java #监听目录
#thymeleag 配置视图解析器
thymeleaf:
prefix: classpath:/templates/
suffix: .html
model: HTML5
encoding: UTF-8
#开发时关闭缓存,不然没法看到实时页面
cache: false
servlet:
content-type: text/html
(5)创建实体类
(6)创建控制类
表示方法比较多,读者,可以,自行测试每个方法
package org.yun.ssm.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import org.yun.ssm.service.UserService;
import org.yun.ssm.vo.UserVO;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName UserController
* @Description TODO
* @Autor 落笔丶
* @Date 2019/9/7 22:34
*/
/**
* 倘若正式开发(公司),自己不是全栈式,那么,此处@Controller 应该改为 @RestController 或者不变,但是在每个方法上面加上注解@ResposeBody表示返回Json数据给前台
* */
//4、@RestController注解的功能等同于@controller和@responsebody
//responsebody就是标识方法只返回字符串不进行视图跳转
//如果,公司,自己只负责后台 那么,可以使用此注解
//像这个 因为是自己玩 前后台交互 下面的 login ,加上@RestControlletr会报400 URL错误
//@RestController
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired(required=true)
private UserService userService;
/**
*
* @Author 落笔丶
* @Description HelloWord http://localhost:8080/user/test
* @Date 2019/9/8 21:55
* @Param
* @return
**/
@RequestMapping("/hello")
public String hello() {
return "Hello World !";
}
/**
*
* @Author 落笔丶
* @Description 测试
* @Date 2019/9/8 22:24
* @Param
* @returnv
* http://localhost:8080/user/map
**/
@RequestMapping("/map")
public Map<String, String> map1() {
Map<String, String> map = new HashMap<String, String>();
map.put("name", "张三");
map.put("age", "28");
return