从零开始SpringBoot项目搭建(一)

本文介绍了如何使用IDEA从零开始创建一个SpringBoot项目,包括设置Maven,配置项目目录结构,编写pom.xml文件,以及启动项目。接着,文章详细讲解了如何整合MybatisPlus,包括导入依赖,配置数据源,以及进行单元测试验证数据库连接和模型操作。
摘要由CSDN通过智能技术生成

一、使用IDEA进行快速创建SpringBoot项目

1.1 通过Maven快速创建新SpringBoot项目

有关Java和Maven等的环境搭建不过多赘述,直接开始操作。

图1
打开IDEA,点击New Project开始创建。

图2
选择Maven,选择自己的JDK版本,点击Next进入下一步

图3
此时需要Name处填写项目名称,在Location处选择项目路径。需要注意的是:

  • 最后路径名应该要和Name填写的相同,之后会在对应的路径下生成项目
  • GroupId采用域名反写的书写形式,作为项目组织唯一的标识符,通常以comcn开头,使用.分割;ArtifactId 作为项目的唯一标识符,一般和项目名称相同

填写完成之后点击Finish,此时新项目创建完成。

图4

1.2 进行项目的Maven设置

图5
点击File -> Setting...,搜索Maven,在上图所画的红框内选择事先配置好的Maven

图6

  • Maven home path为安装的Maven根目录所在路径
  • User setting fileMaven的配置文件settings.xml所在路径
  • Local repositoryMaven本地仓库所在路径,引入的依赖包全部都存储在此仓库目录下,加入没有事先配置自己的Maven本地仓库,可以使用默认仓库

设置好之后点击OK,完成!

1.3 项目目录结构

图7
项目的目录划分一般根据功能来划分包:

  • 目录src/main/java下的包路径需要根据之前填写的ArtifactId 进行创建,反写的域名有几个逗号分隔符,就建几层包,只可多建不可少建。如上图所示我是多建了一个core包,我会将此包作为扫描包的根路径,之后所有的核心代码都会放置在此路径下
  • 启动类DeployApplication:自定义命名,启动类放置在扫描包的根路径下,他是项目的唯一入口
  • config包:用于放置所有的配置类
  • modular包:核心业务代码,该包下所有代码按业务模块划分,每个业务模块进一步细分:
    • controller包:控制层,声明接口,主要用于接受前台传入的数据以及返回数据给前台
    • dao包:数据持久层,用于放置以Mapper为结尾的接口文件和xml文件(该类文件放置在dao下的mapping包中)
    • model包:用于定义数据模型,根据数据模型不同的用途分别放置在不同的包中:数据库表模型entity包、用于请求的数据模型request包、用于返回数据给前台的响应数据模型response包、其他数据模型dto包
    • service包:业务服务层,主要用于实现业务的核心逻辑
    • enums包:用于存放枚举类
    • constant包:用于存放常量
  • util包:用于存放工具类
  • resources包:用于存放项目中需要用到的资源文件,像一些配置文件application.properties或是一些静态资源文件

1.4 配置文件pom.xml

上述步骤中Mavensettings.xml文件是全局的配置文件,主要与Maven的环境配置有关。而pom.xml文件主要描述了项目的maven坐标以及项目的依赖关系,还有一些开发者需要遵循的、自己定义的约束条件,是项目级别的配置文件。

初始pom.xml文件,只需导入spring-boot-starter-web依赖,就能实现初步的启动运行,默认端口8080

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<version>2.1.6.RELEASE</version>
</dependency>

完整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.study</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <packaging>jar</packaging>

    <properties>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <testSource>${java.version}</testSource>
                    <testTarget>${java.version}</testTarget>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <version>${maven-compiler-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <version>3.1.0</version>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>
  • 这里我使用parent标签指定了父级坐标,之后所有导入的SpringBoot相关依赖都无需在指定版本号。
  • 指定打包方式,一般有jarwar两种打包方式,这里指定为jar打包方式
  • 使用properties标签,将所有依赖的版本进行统一管理,更易维护
  • maven-compiler-plugin插件,用来编译项目代码,是一个Maven插件
  • resouces标签配置资源文件加载,会将src/main/java文件夹下的所有.xml文件以及resources资源包下的所有.proerties.xml.yml文件进行编译,加载到编译之后的classes类路径下

完善配置文件pom.xml后,保存代码,点击右侧侧边栏Maven选项卡,点击重新载入依赖包按钮Reload All Maven Projects,下载最新资源成功后,即可让最新pom.xml配置文件发挥作用。

在这里插入图片描述

1.5 快速启动

在扫描包的根目录下创建启动类,如图在core包下创建DeployApplication.java文件,定义主函数入口:

@SpringBootApplication
public class DeployApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(DeployApplication.class).run(args);
    }
}

之后启动项目,点击左侧绿色的箭头按钮,选第一个run或者第二个debug都可以运行,一般选择第二个,方便我们以后遇到问题之后进行调试,快速排查问题

在这里插入图片描述
启动成功!默认端口8080,要想自定义端口号,在application.properties文件中可以进行声明:server.port=[你的端口号]

在这里插入图片描述
在浏览器输入正确的地址http://localhost:8080,如下图。

在这里插入图片描述

二、整合MybatisPlus

2.1 导入依赖

pom.xml配置文件下新增相关依赖

<properties>
	<mybatis-plus-boot-starter.version>3.4.2</mybatis-plus-boot-starter.version>
</properties>

<dependencies>
	<!--mysql数据库连接-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>
	
	<!--MybatisPlus-->
	<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>${mybatis-plus-boot-starter.version}</version>
	</dependency>
</dependencies>

2.2 配置数据源

application.properties文件中配置数据源

# 数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/firework_bbs_dev?serverTimezone=Asia/Shanghai
spring.datasource.username=[数据库登录用户名]
spring.datasource.password=[数据库登录密码]

配置文件有多种格式:

  • .properties为后缀的配置文件,书写格式都是如上所示,xx属性.xx属性=具体值
  • .yml为后缀的配置文件,书写格式则是xx属性: xx属性: 具体值,如下所示
# 数据库连接
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/firework_bbs_dev?serverTimezone=Asia/Shanghai
    username: [数据库登录用户名]
    password: [数据库登录密码]

启动项目,可以看到mybatisplus的启动UI。

在这里插入图片描述

2.3 测试

接下来,验证一下数据库是否真的连接成功了,导入junit相关依赖方便进行单元测试,导入lombok用于简化实体类的创建。

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
</dependency>

2.3.1 数据库新建测试表

创建测试表tbl_demo,创建表的sql语句如下所示:

CREATE TABLE `tbl_demo` (
  `id` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '主键id',
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '姓名',
  `phone` varchar(25) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手机号',
  `create_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人id',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '更新人id',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `is_del` int NOT NULL DEFAULT '0' COMMENT '逻辑删除 0-否 1-是',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

表结构如下图所示:

在这里插入图片描述

2.3.2 根据数据库表结构定义数据模型

package com.study.core.modular.demo.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tbl_demo")
public class Demo {

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 姓名
     */
    @TableField(value = "`name`")
    private String name;

    /**
     * 手机号
     */
    @TableField(value = "phone")
    private String phone;

    /**
     * 创建人id
     */
    @TableField(value = "create_id")
    private String createId;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 更新人id
     */
    @TableField(value = "update_id")
    private String updateId;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;

    /**
     * 逻辑删除 0-否 1-是
     */
    @TableField(value = "is_del")
    @TableLogic
    private Integer isDel;
    
}

2.3.3 声明mapper接口

声明的mapper接口继承MybatisPlusBaseMapper接口

package com.study.core.modular.demo.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.study.core.modular.demo.model.entity.Demo;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface DemoMapper extends BaseMapper<Demo> {
}

2.3.4 编写service层核心业务代码

package com.study.core.modular.demo.service;

import com.study.core.modular.demo.dao.DemoMapper;
import com.study.core.modular.demo.model.entity.Demo;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@AllArgsConstructor
public class DemoService {

    private final DemoMapper demoMapper;

    public Demo getDemoById(String id) {
        return demoMapper.selectById(id);
    }
}

2.3.5 单元测试

创建单元测试,调用service层方法

import com.study.core.modular.demo.service.DemoService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest {

    @Resource
    private DemoService demoService;

    @Test
    public void getDemoTest() {
        Demo demo = demoService.getDemoById("1");
        System.out.println(demo);
    }
}

控制台返回结果如下图所示,能看到正确打印出了demo数据,表示连接数据库以及整合MybatisPlus成功。

在这里插入图片描述

以上是对SpringBoot项目的初始化,要想完成企业级开发,还需要做许多配置。
有兴趣的小伙伴可以继续阅读第二篇有关Swagger接口文档以及MybatisPlus的配置:从零开始SpringBoot项目搭建(二)

  • 8
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值