手把手教你从0搭建SpringBoot项目

这篇具有很好参考价值的文章主要介绍了手把手教你从0搭建SpringBoot项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在银行呆了一年,很久没写SpringBoot项目了,搭建一个简单的SpringBoot项目回顾下

用到的工具:idea 2021、Maven 3.6.3、postman
框架:SpringBoot、Mybatis
数据库:Mysql8.0.30

一、Maven 安装&配置

安装&配置参考博文

注意:
1.下载maven注意idea与Maven版本的适配:

	IDEA 2022 兼容maven 3.8.1及之前的所用版本
	IDEA 2021 兼容maven 3.8.1及之前的所用版本
	IDEA 2020 兼容Maven 3.6.3及之前所有版本
	IDEA 2018 兼容Maven3.6.1及之前所有版本

2.为了避免每次创建项目都要改Maven配置,可以修改idea创建新项目的设置
搭建springboot项目,SpringBoot,spring boot,java,mybatis

二、安装数据库

mysql8安装参考博文

三、设计库表(这里用的idea自带的数据库管理工具,其他诸如Dbeaver、SQLyog等也可以)

搭建springboot项目,SpringBoot,spring boot,java,mybatis
搭建springboot项目,SpringBoot,spring boot,java,mybatis
**注意:**连接不上往往是驱动的问题,把对应的驱动下载好即可

新建表
搭建springboot项目,SpringBoot,spring boot,java,mybatis
新建字段搭建springboot项目,SpringBoot,spring boot,java,mybatis
搭建springboot项目,SpringBoot,spring boot,java,mybatis
添加数据
搭建springboot项目,SpringBoot,spring boot,java,mybatis
注意:添加完成后需要提交

  • 添加的快捷键:alt+insert
  • 提交的快捷键:ctrl+enter

四、搭建SpringBoot项目

1.创建项目

搭建springboot项目,SpringBoot,spring boot,java,mybatis
搭建springboot项目,SpringBoot,spring boot,java,mybatis

2. 勾选会用到的依赖

搭建springboot项目,SpringBoot,spring boot,java,mybatis
搭建springboot项目,SpringBoot,spring boot,java,mybatis

3.项目刚创建好时的结构(图片是拷贝的别人的,所以项目名不一致,别在意,重点关注项目结构即可)

搭建springboot项目,SpringBoot,spring boot,java,mybatis

4.templates文件下新建index.html页面,作为启动的初始页面

搭建springboot项目,SpringBoot,spring boot,java,mybatis

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
SpringBoot 简单启动页面
</body>
</html>

5. 在com.susu.testsimplespringboot下新建controller文件夹,在controller文件夹下建一个简单的LoginController类;(Controller类要添加@Controller注解,项目启动时,SpringBoot会自动扫描加载Controller)

搭建springboot项目,SpringBoot,spring boot,java,mybatis
搭建springboot项目,SpringBoot,spring boot,java,mybatis

package com.susu.testsimplespringboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @ClassName HelloController
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 15:53
 * @Version 1.0
 */
@Controller
public class HelloController {

    @RequestMapping("/index")
    public String sayHello() {
        return "index";
    }
}

6.在resources文件夹下application中先配置DataSource基本信息

application文件有两种文件格式,一种是以**.properties为后缀,一种是以.yml**为后缀的,两种配置方式略有差别,详情可参考:https://blog.csdn.net/qq_29648651/article/details/78503853;在这我是用.yml后缀的文件格式。右键application文件选择Refact,选择Rename,将后缀改为yml;

spring:
  datasource:
    name: test
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.susu.testsimplespringboot.DTO.UserLoginDTO

7. 运行项目TestSimpleSpringBootApplication.java(图片是拷贝的,所以文件名不一致,别在意,重点关注启动类没动过,直接启动即可)

搭建springboot项目,SpringBoot,spring boot,java,mybatis

8.在浏览器中输入localhost:8080,回车显示初始的index界面

搭建springboot项目,SpringBoot,spring boot,java,mybatis

9. SpringBoot 项目大概可以分为以下四层

  • mapper层(dao层)
  • service层(包括service接口、实现类)
  • controller层(web层)

10.最终的项目结构

搭建springboot项目,SpringBoot,spring boot,java,mybatis

11 项目代码展示

(1)在application配置文件中添加:数据库配置、MyBatis配置:

spring:
  datasource:
    name: test
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.susu.testsimplespringboot.DTO.UserLoginDTO

(2)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.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.susu</groupId>
    <artifactId>testSimpleSpringBoot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>testSimpleSpringBoot</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

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

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

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

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



    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

(3) 实体类

UserLogin

package com.susu.testsimplespringboot.pojo;

/**
 * @ClassName UserLogin
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:25
 * @Version 1.0
 */
public class UserLogin {
    private String userAccount;
    private String userPwd;

    public String getUserAccount() {
        return userAccount;
    }

    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    @Override
    public String toString() {
        return "UserLogin{" +
                "userAccount='" + userAccount + '\'' +
                ", userPwd='" + userPwd + '\'' +
                '}';
    }
}

UserLoginDTO (本质也是实体类,这里使用的原因是:数据库三个字段,实体类pojo中只有两个,无法映射,所以根据数据表添加一个三个属性的实体类DTO接收查询结果)

package com.susu.testsimplespringboot.DTO;

/**
 * @ClassName UserLoginDTO
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:49
 * @Version 1.0
 */
public class UserLoginDTO {
    private int userNo;
    private String userAccount;
    private String userPwd;

    public int getUserNo() {
        return userNo;
    }

    public void setUserNo(int userNo) {
        this.userNo = userNo;
    }

    public String getUserAccount() {
        return userAccount;
    }

    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
}

(4)mapper接口

package com.susu.testsimplespringboot.mapper;

import com.susu.testsimplespringboot.DTO.UserLoginDTO;
import org.apache.ibatis.annotations.Mapper;

/**
 * @ClassName UserMapper
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:27
 * @Version 1.0
 */
@Mapper
public interface UserMapper {
    public abstract UserLoginDTO selectUserInfo(String userAccount, String userPwd);
}

(5)mapper映射文件(这个文件可以设置成idea自动提示的模板,避免每次都要自己写,方法如下图)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.susu.testsimplespringboot.mapper.UserMapper">

    <!--验证用户账号和密码-->
    <select id="selectUserInfo" parameterType="String" resultType="com.susu.testsimplespringboot.DTO.UserLoginDTO">
        SELECT * FROM userLogin
        WHERE userAccount = #{userAccount}
          AND userPwd = #{userPwd};
    </select>


</mapper>

搭建springboot项目,SpringBoot,spring boot,java,mybatis
注意!!!

  1. namespace、id的属性值

    namespace:mapper接口名;
    id:mapper接口中抽象方法的名字

  2. mybatis映射文件的一些技术点可参考下面的博文
    https://blog.csdn.net/zxdspaopao/article/details/112919320

(6)service接口

package com.susu.testsimplespringboot.service;

import com.susu.testsimplespringboot.pojo.UserLogin;

/**
 * @ClassName UserService
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:27
 * @Version 1.0
 */
public interface UserService {

    public abstract UserLogin loginCheck(String userAccount, String userPwd);

}

(6)service实现类

package com.susu.testsimplespringboot.serviceImpl;

import com.susu.testsimplespringboot.DTO.UserLoginDTO;
import com.susu.testsimplespringboot.service.UserService;
import com.susu.testsimplespringboot.mapper.UserMapper;
import com.susu.testsimplespringboot.pojo.UserLogin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @ClassName UserServiceImpl
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:37
 * @Version 1.0
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    @Override
    public UserLogin loginCheck(String userAccount, String userPwd) {
        UserLoginDTO userLoginDTO = userMapper.selectUserInfo(userAccount, userPwd);
        UserLogin userLogin = new UserLogin();
        if (userLoginDTO != null) {
            userLogin.setUserAccount(userLoginDTO.getUserAccount());
            userLogin.setUserPwd(userLoginDTO.getUserPwd());
        }
        return userLogin;
    }
}

(7)到此时,可以在测试类测试下Mapper层是否可以正常获取数据

package com.susu.testsimplespringboot;

import com.susu.testsimplespringboot.pojo.UserLogin;
import com.susu.testsimplespringboot.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
class TestSimpleSpringBootApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        UserLogin userLogin = userService.loginCheck("huahua", "123");
        System.out.println(userLogin);
    }

}

(8)controller

package com.susu.testsimplespringboot.controller;

import com.susu.testsimplespringboot.DTO.UserLoginDTO;
import com.susu.testsimplespringboot.pojo.UserLogin;
import com.susu.testsimplespringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName LoginController
 * @Description TODO
 * @Author susu
 * @Date 2023/4/9 16:27
 * @Version 1.0
 */
@Controller
//@ResponseBody
public class LoginController {

    @Autowired
    UserService userService;


    /**
     * @param testGetStaticSource
     * @param index
     * @return
     */
    @RequestMapping("{testGetStaticSource}/{index}")
    public String getStaticSource(@PathVariable String testGetStaticSource, @PathVariable String index) {
        return testGetStaticSource + "/" + index;
    }

    @GetMapping(value = "login")
    public String login() {
        return "login";
    }

    @GetMapping(value = "loginIn")
    public String loginGet(String userAccount, String userPwd) {
        UserLogin user1 = userService.loginCheck(userAccount, userPwd);
        if (user1 != null) {
            return "success";
        } else {
            return "error";
        }
    }

    @PostMapping(value = "loginIn")
    public String loginPost(UserLoginDTO userLoginDTO) {
        UserLogin user1 = userService.loginCheck(userLoginDTO.getUserAccount(), userLoginDTO.getUserPwd());
        if (user1 != null) {
            return "success";
        } else {
            return "error";
        }
    }

}

注意:
1.@RequestMapping,任何请求方式都可以
2.@GetMapping,只能Get请求(前端请求方式如下所示)
搭建springboot项目,SpringBoot,spring boot,java,mybatis

3.@PostMapping,只能Post请求
3.1 用postman发送post请求参考博文
3.2前端json格式报文:

{
"userAccount":"huahua",
"userPwd":"123"
}

4.测试了获取templates文件下的静态资源

    @RequestMapping("{testGetStaticSource}/{index}")
    public String getStaticSource(@PathVariable String testGetStaticSource, @PathVariable String index) {
        return testGetStaticSource + "/" + index;
    }

细节可以参考如下两篇博文
https://blog.csdn.net/zhuzicc/article/details/105465814#%E9%97%AE%E9%A2%98%E5%8E%9F%E5%9B%A0

https://blog.csdn.net/weixin_53106424/article/details/123502419

此处涉及springmvc的原理:
可以参考博文:
https://blog.csdn.net/weixin_53106424/article/details/115309018?spm=1001.2014.3001.5502

(9)几个静态文件
9.1 login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form role="form" action="/loginIn" method="post">
    账号:<input type="text" id="userAccount" name="userAccount"><br>
    密码:<input type="password" id="userPwd" name="userPwd"><br>
    <input type="submit" id="login" value="login">
</form>
</body>
</html>

9.2 success.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>success</title>
</head>
<body>
<h1>登录成功</h1>
</body>
</html>

9.3 error.html文章来源地址https://www.toymoban.com/news/detail-776298.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>eoor</title>
</head>
<body>
<h1>登录失败</h1>
</body>
</html>

到了这里,关于手把手教你从0搭建SpringBoot项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你从微软官网上下载系统镜像【保持最新版】

    🔥推荐阅读:http://t.csdn.cn/nQfIY🔥 🥇个人主页:@MIKE笔记 🥈专栏:爱倒腾 如何从微软官网下载到全系列的系统镜像: 有人可能会说,都有镜像下载工具了,还有了解如何从微软官网直接下载镜像的必要吗? MIKE笔记认为,不仅要知其然,还要知其所以然,掌握这些电脑技巧

    2024年02月04日
    浏览(59)
  • 手把手教你从0开始在服务器上部署stable diffusion

    验证是否有nvidia驱动 如果没有显示出显卡信息(如下) 则需要参考 ubuntu安装nvidia驱动 https://blog.csdn.net/Perfect886/article/details/119109380 远程连接服务器工具:VS Code https://code.visualstudio.com/Download VS Code 插件:Remote 文件传输工具 FileZilla https://www.filezilla.cn/download 下载地址: https:

    2024年02月06日
    浏览(59)
  • 手把手教你从零搭建ChatGPT网站AI绘画系统,(SparkAi系统V6)GPTs应用、DALL-E3文生图、AI换脸、垫图混图、SunoAI音乐生成

    SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPTs、GPT语音对话、GPT-4模型、GPT联网提问、DALL-E

    2024年04月17日
    浏览(47)
  • 手把手教你搭建 Webpack 5 + React 项目

    在平时工作中,为减少开发成本,一般都会使用脚手架来进行开发,比如 create-react-app 。脚手架都会帮我们配置好了 webpack,但如果想自己搭建 webpack 项目要怎么做呢?这边文章将介绍如何使用 webpack 5 来搭建 react 项目,项目地址在文末。 1.1 Webpack 的好处 试想在不使用任何打

    2024年02月08日
    浏览(44)
  • Swagger:手把手教你从0开始配置idea中swagger,全步骤配图文版。

    Swagger 是一组用于设计、构建、文档化和使用 RESTful Web 服务的开源工具和框架。它允许开发团队设计、构建和测试 API,并提供易于理解的文档,以便开发人员和消费者能够快速了解和使用 API。Swagger 通常与各种编程语言和框架一起使用,以简化 API 的开发和维护过程。 1.文件

    2024年02月04日
    浏览(72)
  • IntelliJ IDEA运行SpringBoot项目,手把手教你运行

    IDEA JDK1.8 MySQL8.0 Maven 一:配置maven 第一步 :用IDEA打开项目,开始配置maven环境 ,如果本地没有提前配置好maven,就用IDEA默认的配置即可 第二步:配置maven步骤 出现情况1 :如果本地没有配置过maven,可以保持如下默认配置 (未配置直接忽略出现情况2) 出现情况2 :如果本地

    2024年02月09日
    浏览(65)
  • 手把手教你搭建VideoReTalking的AI数字人项目

    提示:本文的安装包下载时间为2023-8-15日,项目还在更新中,可能会有出入,仅供大家参考。 提示:先下载好项目预先需要各种安装包与预训练模型 注意:如果你跟我一样家庭网速感人,可以考虑使用: https://ghproxy.com/ 加速代理 则可以加速下载包的速度 例如地址:https://ghp

    2024年02月06日
    浏览(68)
  • 【Docker】手把手教你搭建好玩的docker项目合集

    这是我在使用docker后,慢慢一个个累计起来的项目,觉得还挺有意思的。 之后我会持续慢慢的更新新的项目,大伙如何有好玩的docker项目,欢迎来找我讨论哇,我每天都会看私信的 docker搭建数据库 使用docker安装数据库是非常省事的,而且想安什么类型的数据就安什么类型的

    2024年02月07日
    浏览(60)
  • 【零基础】手把手教你使用Docker部署Springboot项目(详细版)

    ​  本篇文章适合刚学完Docker,想要部署Springboot项目的小白;当然,如果你还没有学习Docker,只要严格按照本篇文章的步骤执行,理论上也是可以完成部署的。   我接下来部署的项目都是以一台全新Liunx服务器视角来操作,该服务器上jdk,mysql和Docker都还没有安装。 ​

    2024年01月20日
    浏览(59)
  • 前端小程序,手把手教你从零开始做一个酷炫的扭蛋机十连抽动画效果

    其实没有做多复杂的效果,连 canvas 都没用上,都是一些简单的平面变换,不过一段看似复杂的动画往往都是几个简单的变换拼接而成,所以我们逐步拆解,很简单的就能得到一个扭蛋机十连抽效果。 语言环境 我这边使用的是 tailwindcss 和 ts,在 uniapp  + vue3 的情况下写的小

    2024年04月13日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包