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

从零开始SpringBoot项目搭建(一):使用IDEA创建新的SpringBoot项目以及进行MybatisPlus集成

  • 一、使用IDEA进行快速创建SpringBoot项目
    • 1.1 通过Maven快速创建新SpringBoot项目
    • 1.2 进行项目的Maven设置
    • 1.3 项目目录结构
    • 1.4 配置文件pom.xml
    • 1.5 快速启动
  • 二、整合MybatisPlus
    • 2.1 导入依赖
    • 2.2 配置数据源
    • 2.3 测试
      • 2.3.1 数据库新建测试表
      • 2.3.2 根据数据库表结构定义数据模型
      • 2.3.3 声明mapper接口
      • 2.3.4 编写service层核心业务代码
      • 2.3.5 单元测试

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

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

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

从零开始SpringBoot项目搭建(一)_第1张图片
打开IDEA,点击New Project开始创建。

从零开始SpringBoot项目搭建(一)_第2张图片
选择Maven,选择自己的JDK版本,点击Next进入下一步

从零开始SpringBoot项目搭建(一)_第3张图片
此时需要Name处填写项目名称,在Location处选择项目路径。需要注意的是:

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

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

从零开始SpringBoot项目搭建(一)_第4张图片

1.2 进行项目的Maven设置

从零开始SpringBoot项目搭建(一)_第5张图片
点击File -> Setting...,搜索Maven,在上图所画的红框内选择事先配置好的Maven

从零开始SpringBoot项目搭建(一)_第6张图片

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

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

1.3 项目目录结构

从零开始SpringBoot项目搭建(一)_第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.bootgroupId>
	<artifactId>spring-boot-starter-webartifactId>
	<version>2.1.6.RELEASEversion>
dependency>

完整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.studygroupId>
    <artifactId>spring-boot-demoartifactId>
    <version>1.0-SNAPSHOTversion>

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

    <packaging>jarpackaging>

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

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <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.pluginsgroupId>
                <artifactId>maven-resources-pluginartifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}encoding>
                configuration>
                <version>3.1.0version>
            plugin>
        plugins>
        <resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.xmlinclude>
                includes>
            resource>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                    <include>**/*.ymlinclude>
                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配置文件发挥作用。

从零开始SpringBoot项目搭建(一)_第8张图片

1.5 快速启动

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

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

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

从零开始SpringBoot项目搭建(一)_第9张图片
启动成功!默认端口8080,要想自定义端口号,在application.properties文件中可以进行声明:server.port=[你的端口号]

从零开始SpringBoot项目搭建(一)_第10张图片
在浏览器输入正确的地址http://localhost:8080,如下图。

从零开始SpringBoot项目搭建(一)_第11张图片

二、整合MybatisPlus

2.1 导入依赖

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

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

<dependencies>
	
	<dependency>
		<groupId>mysqlgroupId>
		<artifactId>mysql-connector-javaartifactId>
	dependency>
	
	
	<dependency>
		<groupId>com.baomidougroupId>
		<artifactId>mybatis-plus-boot-starterartifactId>
		<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。

从零开始SpringBoot项目搭建(一)_第12张图片

2.3 测试

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

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

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-testartifactId>
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;

表结构如下图所示:

从零开始SpringBoot项目搭建(一)_第13张图片

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")
    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项目搭建(一)_第14张图片

你可能感兴趣的:(spring,boot,java,后端,maven)