使用maven快速搭建SpringBoot的SSM项目
文档说明
- 开发环境是idea开发工具、jdk8还有maven3.5.4
- 理论上jdk版本不比我低并且maven版本在3.3以上都没问题,版本如图
开发步骤
创建一个名为demo-user的maven项目,如下图:
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiaohh</groupId>
<artifactId>demo-user</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
当我们来到我们本次讲解的版本的官方文档,可以看到更详细的讲解,来到Getting Started的Creating the POM可以看到我们的maven需要继承一个父项目,代码为
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
</parent>
将其粘贴到项目中:
注意要刷新maven项目,然后我们来到爷爷辈的maven父项目可以看到很多的starter
需要注意SpringBoot之所以能够快速搭建项目,其原理还是使用starter快速导包和SpringBoot的快速配置,其中SpringMVC的starter如下,导入这个starter即可导入web相关的所有依赖:
依赖代码:
<!-- SpringMVC 相关的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
可以看出我们导入了MVC相关jar包(记得刷新maven项目,下面操作不在提醒,请自觉刷新)
然后我们建立一个启动类 com.xiaohh.user.UserApplication
,代码如下:
package com.xiaohh.user;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* <p>
* SpringBoot 项目的启动类
* </p>
*
* @author XiaoHH
* @version 1.0
* @date 2021-02-22 星期一 19:00:40
* @file UserApplication.java
*/
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class);
}
}
然后我们再建立一个 application.yml
在resources中,代码如下:
server:
port: 80 # 设置端口号为 80
servlet:
context-path: /user # 设置一下访问项目的上下文
然后我们编写一个测试用的 Controller 试一下是否搭建成功
package com.xiaohh.user.controllers;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 测试使用的 controller
* </p>
*
* @author XiaoHH
* @version 1.0
* @date 2021-02-22 星期一 19:05:19
* @file TestController.java
*/
@RestController
@RequestMapping("/v1/test")
public class TestController {
@GetMapping
public String hello() {
return "hello";
}
}
接下来我们启动一下启动类,控制台看到如下界面表示启动成功
接下来我们访问一下这个 Controller 看一下是否成功,可以看到访问是没有问题的
然后我们再来创建对应的数据库:
SET NAMES `UTF8`;
DROP DATABASE IF EXISTS `demo_user`;
CREATE DATABASE `demo_user`;
USE `demo_user`;
-- 创建用户表
CREATE TABLE `user` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户 ID',
`username` VARCHAR(20) NOT NULL COMMENT '用户名',
`password` VARCHAR(20) NOT NULL COMMENT '密码',
`birthday` DATE COMMENT '出生日期'
);
和对应的实体类
package com.xiaohh.user.entities;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 对应数据库中的 user 表
* </p>
*
* @author XiaoHH
* @version 1.0
* @date 2021-02-22 星期一 19:23:56
* @file User.java
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Accessors(chain = true)
public class User implements Serializable {
/**
* 用户 ID
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 出生日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd") // 前端传过来的数据格式
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") // 我们传给前端的数据格式
private Date birthday;
/**
* 计算年龄
*
* @return 年龄
*/
public int getAge() {
if (this.birthday == null) return 0;
// 现在的日期
Date now = new Date();
// 初始计算年龄
int age = now.getYear() - this.birthday.getYear();
// 设置成同年份然后进行比较
now.setYear(this.birthday.getYear());
// 将时间设置成当天的 0:00:00.000
now.setTime(now.getTime() - (now.getTime() % (1000 * 60 * 60 * 24)) - 1000 * 60 * 60 * 8);
// this.birthday.setTime(this.birthday.getTime() - (this.birthday.getTime() % (1000 * 60 * 60 * 24)) - 1000 * 60 * 60 * 8);
/*
this.birthday.compareTo(now);
如果 birthday 比 now 大,则返回1,如果小返回-1(代表生日还没过),相等则返回0
*/
age += this.birthday.compareTo(now);
return age;
}
}
注意添加lombok相关依赖
<!-- Lombok 相关依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后接下来我们整合 mybatis,因为mybatis的starter不是spring官方提供的,那么我们就来mybatis官网来看一下如何编写starter:
代码如下:
<!-- mybatis 相关依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
顺便导入 MySQL 驱动包:
<!-- MySQL 驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
然后在 application.yml
中配置数据源:
spring:
datasource: # 数据源配置
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/demo_user?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
然后配置mybatis:
mybatis:
mapper-locations: classpath:mybatis/mappers/UserMapper.xml
type-aliases-package: com.xiaohh.user.entities
接下来我们编写三层,因为代码量的原因我就直接将代码放在我的个人gitee上了,可自行下载,也可以按照地址克隆,要特别注意要在 Mapper 上加一个注解来代表这是一个 Mapper,其余的和普通的 SSM 没区别
我们现在来看一下Controller层的方法抬头
package com.xiaohh.user.controllers;
import com.xiaohh.user.entities.User;
import com.xiaohh.user.services.UserService;
import com.xiaohh.user.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* user 对象的前端控制类
* </p>
*/
@RestController
@RequestMapping("/v1/user")
public class UserController {
/**
* 向数据库中添加一个数据的 Controller 接口
* @param user 用户对象
* @return 返回信息中包含是否成功
*/
@PostMapping
public R add(@RequestBody User user);
/**
* 用户对象列表查询
* @return 用户对象的列表
*/
@GetMapping
public R list();
/**
* 根据 id 获取用户对象
* @param id 用户 id
* @return 用户对象
*/
@GetMapping("/{id}")
public R get(@PathVariable("id") long id);
/**
* 根据用户 id 更新一个用户对象
* @param user 用户对象
* @return 是否成功
*/
@PutMapping
public R update(@RequestBody User user);
/**
* 根据用户 id 删除用户对象
* @param id 用户 id
* @return 是否成功
*/
@DeleteMapping("/{id}")
public R delete(@PathVariable("id") long id);
}
那么我们运行起来之后来测试这个端口,使用postman:
注意,所有 RequestBody
的添加路径在:
-
测试添加接口
url: http://127.0.0.1/user/v1/user RequestBody: {"username": "XiaoHH", "password": "XiaoHHSuperme", "birthday": "2021-02-22"}
测试结果:
数据库:
-
测试用户对象列表查询
url: http://127.0.0.1/user/v1/user
数据库:
测试结果:
-
测试根据 id 获取用户对象
url: http://127.0.0.1/user/v1/user/1
数据库同上,测试结果:
其余的请自己测试,本文不演示了
精彩预告(更新预告)
- 使用maven快速搭建SpringBoot的SSM项目
- 根据环境选择不同的配置,如开发环境一套配置,测试环境一套生产环境又一套
- 整合 RestControllerAdvice 做异常统一处理,坚决不把异常抛出给前端
- 整合 JSR303 做数据校验
- 整合 redis 做数据缓存
- 整合 Spring Cloud 做微服务注册调用
本文地址:https://blog.csdn.net/m0_51510236/article/details/113967278
上一篇: 基于注解实现的策略模式
推荐阅读
-
ssm整合总结(一)--第一步之使用maven搭建一个web项目
-
在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记
-
idea使用spring Initializr 快速搭建springboot项目遇到的坑
-
springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)
-
SpringBoot使用Maven插件进行项目打包的方法
-
SSM框架搭建项目,使用ajax的RESTfull风格
-
使用IDEA快速构建ssm项目并快速解决遇到的常见的HTTP Status 404 – Not Found坑
-
从零搭建基于SpringBoot的秒杀系统(二):快速搭建一个SpringBoot项目
-
使用maven快速搭建SpringBoot的SSM项目
-
IDEA快速搭建SpringBoot的项目(一)最简单的demo