SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接

SpringMVC基于SpringBoot的最基础框架搭建------包含数据库连接

背景

工作做了一段时间,回忆起之前有个公司有线下笔试,要求考生做一个什么功能,我为了省事就直接使用了自己以前魔改的项目框架,阉割了很多功能,但是整个项目结构还是保持原样。后面功能完成的还行被喊去面试了,结果被人嘲讽怎么不自己搭框架,要用别人的框架。~~(PS:你面个试重点不讲考题,你管框架干什么,搞得别人题目做出来了,框架不会搭似的)~~工作之余,来重温一下SpringBoot最基础框架搭建,在此全部分享给大家,让这些面试官无话可说。

目标

jdk1.8环境下搭建一个SpringBoot-2.3.4.RELEASE项目,包含最基础的接口功能、数据库查询功能

工具 依赖
启动器 spring-boot-starter
Web容器 spring-boot-starter-web
数据库 dynamic-datasource-spring-boot-starter-3.6.1、mybatis-plus-boot-starter-3.4.2
其他 lombok-1.18.8、commons-io-2.11.0、javax.servlet-api-4.0.1
打包 spring-boot-maven-plugin-2.1.1.RELEASE

依赖

整体以来如下

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>org.example</groupId>
    <artifactId>test-dds</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- SpringBoot 核心包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- SpringBoot Web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 动态数据源 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.6.1</version>
        </dependency>
        <!-- mysql连接 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>
        <!-- Mybatis-Plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!--简化实体类,用@Data代替getset方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>
        <!-- io常用工具类 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
        <!-- Java Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
            </plugin>
        </plugins>
        <finalName>${project.artifactId}</finalName>
    </build>
</project>

配置文件如下

yml 复制代码
server:
  port: 8765
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    threads:
      # tomcat最大线程数,默认为200
      max: 800
      # Tomcat启动初始化的线程数,默认值25
      min-spare: 30
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  datasource:
    dynamic:
      datasource:
        master:
          username: root
          password: root
          url: jdbc:mysql://127.0.0.1:3307/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
          driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  global-config:
    db-config:
      id-type: auto
      insert-strategy: not_null
      update-strategy: not_null
  # 搜索指定包别名
  type-aliases-package: com.dds.test.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapper-locations: classpath*:mybatis/**/*Mapper.xml
  # 加载全局的配置文件
  #  config-location: classpath:mybatis/mybatis-config.xml
  configuration:
    cache-enabled: true
    use-generated-keys: true
    default-executor-type: reuse
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    map-underscore-to-camel-case: true

项目结构如下

相关配置如下

本文只加了一个数据库时间类型字段转json的配置,需要搭配@JsonFormat使用,不需要的可以简化

java 复制代码
package com.dds.test.config;

import java.util.TimeZone;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

/**
 * 程序注解配置
 *
 * @author framework
 */
@Configuration
// 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy(exposeProxy = true)
// 指定要扫描的Mapper类的包的路径
@MapperScan("com.dds.test.**.mapper")
public class ApplicationConfig
{
    /**
     * 时区配置
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization()
    {
        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
    }
}

启动代码如下

java 复制代码
package com.dds.test;

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

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class TestDdsApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestDdsApplication.class, args);
    }
}

Controller如下

这里有些小伙伴可能会遇到@RestController和@Controller混淆的问题,或者写好了还是访问不成功的问题,尤其是用@Controller配置好后,接口能进入后台但是还是报404问题,我会在另外一篇文章进行解答

启动成功

接口调用成功

相关推荐
仟濹5 小时前
【HTML】基础学习【数据分析全栈攻略:爬虫+处理+可视化+报告】
大数据·前端·爬虫·数据挖掘·数据分析·html
雷神乐乐5 小时前
Oracle正则表达式学习
数据库·sql·oracle·正则表达式
江沉晚呤时5 小时前
SQL Server 事务详解:概念、特性、隔离级别与实践
java·数据库·oracle·c#·.netcore
小小小小宇6 小时前
前端WebWorker笔记总结
前端
小小小小宇6 小时前
前端监控用户停留时长
前端
一步一念6 小时前
Langchaine4j 流式输出 (6)
spring boot·ai·langchain4j
小小小小宇6 小时前
前端性能监控笔记
前端
斯特凡今天也很帅6 小时前
clickhouse如何查看操作记录,从日志来查看写入是否成功
数据库·clickhouse
菜菜小蒙6 小时前
【MySQL】MVCC与Read View
数据库·mysql
不辉放弃7 小时前
HiveSQL语法全解析与实战指南
数据库·hive·大数据开发