使用maven快速搭建SpringBoot的SSM项目

文档说明

  • 开发环境是idea开发工具、jdk8还有maven3.5.4
  • 理论上jdk版本不比我低并且maven版本在3.3以上都没问题,版本如图

使用maven快速搭建SpringBoot的SSM项目_第1张图片

开发步骤

创建一个名为demo-user的maven项目,如下图:

pom.xml文件:


<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.0modelVersion>

    <groupId>com.xiaohhgroupId>
    <artifactId>demo-userartifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <maven.compiler.source>8maven.compiler.source>
        <maven.compiler.target>8maven.compiler.target>
    properties>

project>

当我们来到我们本次讲解的版本的官方文档,可以看到更详细的讲解,来到Getting Started的Creating the POM可以看到我们的maven需要继承一个父项目,代码为

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.3.9.RELEASEversion>
parent>

将其粘贴到项目中:

注意要刷新maven项目,然后我们来到爷爷辈的maven父项目可以看到很多的starter

需要注意SpringBoot之所以能够快速搭建项目,其原理还是使用starter快速导包和SpringBoot的快速配置,其中SpringMVC的starter如下,导入这个starter即可导入web相关的所有依赖:

使用maven快速搭建SpringBoot的SSM项目_第2张图片

依赖代码:


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
dependency>

可以看出我们导入了MVC相关jar包(记得刷新maven项目,下面操作不在提醒,请自觉刷新)

使用maven快速搭建SpringBoot的SSM项目_第3张图片

然后我们建立一个启动类 com.xiaohh.user.UserApplication,代码如下:

package com.xiaohh.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 

* SpringBoot 项目的启动类 *

* * @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;

/**
 * 

* 测试使用的 controller *

* * @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 看一下是否成功,可以看到访问是没有问题的

使用maven快速搭建SpringBoot的SSM项目_第4张图片

然后我们再来创建对应的数据库:

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;

/**
 * 

* 对应数据库中的 user 表 *

* * @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相关依赖


<dependency>
    <groupId>org.projectlombokgroupId>
    <artifactId>lombokartifactId>
dependency>

然后接下来我们整合 mybatis,因为mybatis的starter不是spring官方提供的,那么我们就来mybatis官网来看一下如何编写starter:

使用maven快速搭建SpringBoot的SSM项目_第5张图片

代码如下:


<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.1.3version>
dependency>

顺便导入 MySQL 驱动包:


<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
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 没区别

使用maven快速搭建SpringBoot的SSM项目_第6张图片

我们现在来看一下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.*;

/**
 * 

* user 对象的前端控制类 *

*/
@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 的添加路径在:

使用maven快速搭建SpringBoot的SSM项目_第7张图片

  1. 测试添加接口

    url: http://127.0.0.1/user/v1/user
    RequestBody: {"username": "XiaoHH", "password": "XiaoHHSuperme", "birthday": "2021-02-22"}
    

    测试结果:

使用maven快速搭建SpringBoot的SSM项目_第8张图片

数据库:

使用maven快速搭建SpringBoot的SSM项目_第9张图片

  1. 测试用户对象列表查询

    url: http://127.0.0.1/user/v1/user
    

    数据库:

使用maven快速搭建SpringBoot的SSM项目_第10张图片

测试结果:

使用maven快速搭建SpringBoot的SSM项目_第11张图片

  1. 测试根据 id 获取用户对象

    url: http://127.0.0.1/user/v1/user/1
    

    数据库同上,测试结果:

使用maven快速搭建SpringBoot的SSM项目_第12张图片

其余的请自己测试,本文不演示了

精彩预告(更新预告)

  • 使用maven快速搭建SpringBoot的SSM项目
  • 根据环境选择不同的配置,如开发环境一套配置,测试环境一套生产环境又一套
  • 整合 RestControllerAdvice 做异常统一处理,坚决不把异常抛出给前端
  • 整合 Spring Validated 做数据校验
  • 整合 redis 做数据缓存
  • 整合 Spring Cloud 做微服务注册调用

你可能感兴趣的:(框架,java,spring,spring,boot,mybatis)