Spring Boot 项目创建流程

本文详细介绍了Spring Boot项目从创建到整合Mybatis-Plus的全过程,包括Spring Boot的基础设置、Lombok的使用、Mybatis-Plus的配置与CRUD操作,以及与iView+Vue的集成,提供了全面的步骤指南。
摘要由CSDN通过智能技术生成

Spring Boot 项目创建流程

一、概述

1.1、什么是Spring Boot

随着Spring体系的壮大,Java开发环境的搭建及使用显得尤为繁琐。在这种情况下, SpringBoot应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个 习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框 架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

1.2、核心功能
  • 自动配置(auto­configuration):针对很多Spring应用程序常见的应用功能,Spring Boot能自 动提供相关配置
  • 起步依赖(starters):告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 命令行界面(cli):这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程 序,无需传统项目构建。
  • 自省和监控(actuator):提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相 关功能统计等,可以让你深入运行中的Spring Boot应用程序,一探究竟。
1.3、三个核心注解

1、@ SpringBoot Configuration

 配置文件,用来代替 applicationContext.xml 配置文件, 

2、@ComponentScan

 开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中 

3、@EnableAutoConfiguration

提供自动配置 

二、第一个Spring Boot程序

1、创建流程

1.1、jdk

在这里插入图片描述

1.2、组名、项目名

在这里插入图片描述

1.3、模板及spring boot 版本

在这里插入图片描述

1.4、修改Maven仓库

在这里插入图片描述

1.5、改编码

在这里插入图片描述

1.6、编写controller、pojo、service、mappe

2、lombok自动生成实体类

2.1、idea链接数据库

在这里插入图片描述

2.2、安装Lombok插件

在这里插入图片描述

2.3、配置Generate POJOs.groovy
import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil

/*
 * Available context bindings:
 *   SELECTION   Iterable<DasObject>
 *   PROJECT     project
 *   FILES       files helper
 */

packageName = "com.pojo;"    // 此处指定包路径,也就对应实体类中的package com.topex.admin.entity;
typeMapping = [    // 此处指定对应的类型映射,如下:数据库中bigint对应生成java的Long,int|tinyint生成Integer...
                   (~/(?i)int|bit|integer|number/)   : "Integer",
                   (~/(?i)float|double|decimal|real/): "Double",
                   (~/(?i)datetime|timestamp/)       : "java.time.LocalDateTime",
                   (~/(?i)date/)                     : "java.time.LocalDate",
                   (~/(?i)time/)                     : "java.time.LocalTime",
                   (~/(?i)/)                         : "String"
]

FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
    SELECTION.filter { it instanceof DasTable }.each { generate(it, dir) }
}

def generate(table, dir) {
    def className = javaName(table.getName(), true)
    def fields = calcFields(table)
    new PrintWriter(new OutputStreamWriter(new FileOutputStream( new File(dir, className + ".java")), "utf-8")).withPrintWriter { out -> generate(out, className, fields) }
}

def generate(out, className, fields) {   // 从这里开始,拼实体类的具体逻辑代码
    out.println "package $packageName"
    out.println ""
    out.println ""
    out.println "import lombok.Data;"     // 因为我使用了lombok插件,使用到了Data注解,所以在引包时加了这一行
    out.println "import io.swagger.annotations.ApiModelProperty;"   // 同上,使用了swagger文档,所以引入到需要的注解
    out.println "import javax.persistence.Id;"  // tk.mybatis插件需用时需要@id注解,所以引入,不需要就去掉
    out.println ""
    out.println "@Data"
    out.println "public class $className {"
    out.println ""
    int i = 0
    fields.each() {   // 遍历字段,按下面的规则生成
        // 输出注释,这里唯一的是id特殊判断了一下,如果判断it.name == id, 则多添加一行@Id
        if (it.name == "id") {
            if (!isNotEmpty(it.commoent)) {
                out.println "\t/**"
                out.println "\t * 主键id"
                out.println "\t */"
//                out.println "\t@ApiModelProperty(value = \"主键id\", position = ${i})"
            }
//            out.println "\t@Id"
        }
        if (isNotEmpty(it.commoent)) {
            out.println "\t/**"
            out.println "\t * ${it.commoent}"
            out.println "\t */"
//            out.println "\t@ApiModelProperty(value = \"${it.commoent}\", position = ${i})"
        }
        if (it.annos != "") out.println "  ${it.annos}"
        out.println "\tprivate ${it.type} ${it.name};"
        out.println ""
        i++
    }
    out.println ""
    out.println "}"
}

def calcFields(table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.getDataType().getSpecification())
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        fields += [[
                           name : javaName(col.getName(), false),
                           type : typeStr,
                           commoent: col.getComment(),
                           annos: ""]]
    }
}

def isNotEmpty(content) {
    return content != null && content.toString().trim().length() > 0
}

def javaName(str, capitalize) {
    def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)
            .collect { Case.LOWER.apply(it).capitalize() }
            .join("")
            .replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")
    capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]
}
2.4、生成实体类

在这里插入图片描述

2.5、配置application.yml
# 对应项后面加空格,不是tab
server:
  port: 8080
  servlet:
    context-path: /

#数据源
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/smbms
    username: root
    password: root
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  resources:
    static-locations: /**
mybatis:
  configuration:
    map-underscore-to-camel-case: true    #下划线转驼峰命名标识
    auto-mapping-behavior: full  #全自动映射
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  type-aliases-package: com.zy.demossm_01.pojo  #给包下类取别名
  mapper-locations: classpath:mapper/*Mapper.xml #找到sql映射的xml文件
#日志
logging:
  level:
    root: info
    com.zy.demossm_01: debug

3、导入依赖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 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.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.trace</groupId>
    <artifactId>smbms01</artifactId>
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无痕YF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值