国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

手把手教你從0搭建SpringBoot項目

這篇具有很好參考價值的文章主要介紹了手把手教你從0搭建SpringBoot項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在銀行呆了一年,很久沒寫SpringBoot項目了,搭建一個簡單的SpringBoot項目回顧下

用到的工具:idea 2021、Maven 3.6.3、postman
框架:SpringBoot、Mybatis
數(shù)據(jù)庫: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.為了避免每次創(chuàng)建項目都要改Maven配置,可以修改idea創(chuàng)建新項目的設(shè)置
搭建springboot項目,SpringBoot,spring boot,java,mybatis

二、安裝數(shù)據(jù)庫

mysql8安裝參考博文

三、設(shè)計庫表(這里用的idea自帶的數(shù)據(jù)庫管理工具,其他諸如Dbeaver、SQLyog等也可以)

搭建springboot項目,SpringBoot,spring boot,java,mybatis
搭建springboot項目,SpringBoot,spring boot,java,mybatis
**注意:**連接不上往往是驅(qū)動的問題,把對應(yīng)的驅(qū)動下載好即可

新建表
搭建springboot項目,SpringBoot,spring boot,java,mybatis
新建字段搭建springboot項目,SpringBoot,spring boot,java,mybatis
搭建springboot項目,SpringBoot,spring boot,java,mybatis
添加數(shù)據(jù)
搭建springboot項目,SpringBoot,spring boot,java,mybatis
注意:添加完成后需要提交

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

四、搭建SpringBoot項目

1.創(chuàng)建項目

搭建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.項目剛創(chuàng)建好時的結(jié)構(gòu)(圖片是拷貝的別人的,所以項目名不一致,別在意,重點關(guān)注項目結(jié)構(gòu)即可)

搭建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(圖片是拷貝的,所以文件名不一致,別在意,重點關(guān)注啟動類沒動過,直接啟動即可)

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

8.在瀏覽器中輸入localhost:8080,回車顯示初始的index界面

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

9. SpringBoot 項目大概可以分為以下四層

  • mapper層(dao層)
  • service層(包括service接口、實現(xiàn)類)
  • controller層(web層)

10.最終的項目結(jié)構(gòu)

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

11 項目代碼展示

(1)在application配置文件中添加:數(shù)據(jù)庫配置、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 (本質(zhì)也是實體類,這里使用的原因是:數(shù)據(jù)庫三個字段,實體類pojo中只有兩個,無法映射,所以根據(jù)數(shù)據(jù)表添加一個三個屬性的實體類DTO接收查詢結(jié)果)

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映射文件(這個文件可以設(shè)置成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
注意?。。?/strong>

  1. namespace、id的屬性值

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

  2. mybatis映射文件的一些技術(shù)點可參考下面的博文
    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實現(xiàn)類

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層是否可以正常獲取數(shù)據(jù)

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發(fā)送post請求參考博文
3.2前端json格式報文:

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

4.測試了獲取templates文件下的靜態(tài)資源

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

細節(jié)可以參考如下兩篇博文
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)幾個靜態(tài)文件
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文章來源地址http://www.zghlxwxcb.cn/news/detail-776298.html

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

到了這里,關(guān)于手把手教你從0搭建SpringBoot項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 手把手教你從微軟官網(wǎng)上下載系統(tǒng)鏡像【保持最新版】

    手把手教你從微軟官網(wǎng)上下載系統(tǒng)鏡像【保持最新版】

    ??推薦閱讀:http://t.csdn.cn/nQfIY?? ??個人主頁:@MIKE筆記 ??專欄:愛倒騰 如何從微軟官網(wǎng)下載到全系列的系統(tǒng)鏡像: 有人可能會說,都有鏡像下載工具了,還有了解如何從微軟官網(wǎng)直接下載鏡像的必要嗎? MIKE筆記認為,不僅要知其然,還要知其所以然,掌握這些電腦技巧

    2024年02月04日
    瀏覽(22)
  • 手把手教你從0開始在服務(wù)器上部署stable diffusion

    驗證是否有nvidia驅(qū)動 如果沒有顯示出顯卡信息(如下) 則需要參考 ubuntu安裝nvidia驅(qū)動 https://blog.csdn.net/Perfect886/article/details/119109380 遠程連接服務(wù)器工具:VS Code https://code.visualstudio.com/Download VS Code 插件:Remote 文件傳輸工具 FileZilla https://www.filezilla.cn/download 下載地址: https:

    2024年02月06日
    瀏覽(91)
  • 手把手教你從零搭建ChatGPT網(wǎng)站AI繪畫系統(tǒng),(SparkAi系統(tǒng)V6)GPTs應(yīng)用、DALL-E3文生圖、AI換臉、墊圖混圖、SunoAI音樂生成

    手把手教你從零搭建ChatGPT網(wǎng)站AI繪畫系統(tǒng),(SparkAi系統(tǒng)V6)GPTs應(yīng)用、DALL-E3文生圖、AI換臉、墊圖混圖、SunoAI音樂生成

    SparkAi創(chuàng)作系統(tǒng)是基于ChatGPT進行開發(fā)的Ai智能問答系統(tǒng)和Midjourney繪畫系統(tǒng),支持OpenAI-GPT全模型+國內(nèi)AI全模型。本期針對源碼系統(tǒng)整體測試下來非常完美,那么如何搭建部署AI創(chuàng)作ChatGPT?小編這里寫一個詳細圖文教程吧。已支持GPTs、GPT語音對話、GPT-4模型、GPT聯(lián)網(wǎng)提問、DALL-E

    2024年04月17日
    瀏覽(36)
  • 手把手教你搭建 Webpack 5 + React 項目

    手把手教你搭建 Webpack 5 + React 項目

    在平時工作中,為減少開發(fā)成本,一般都會使用腳手架來進行開發(fā),比如 create-react-app 。腳手架都會幫我們配置好了 webpack,但如果想自己搭建 webpack 項目要怎么做呢?這邊文章將介紹如何使用 webpack 5 來搭建 react 項目,項目地址在文末。 1.1 Webpack 的好處 試想在不使用任何打

    2024年02月08日
    瀏覽(31)
  • Swagger:手把手教你從0開始配置idea中swagger,全步驟配圖文版。

    Swagger:手把手教你從0開始配置idea中swagger,全步驟配圖文版。

    Swagger 是一組用于設(shè)計、構(gòu)建、文檔化和使用 RESTful Web 服務(wù)的開源工具和框架。它允許開發(fā)團隊設(shè)計、構(gòu)建和測試 API,并提供易于理解的文檔,以便開發(fā)人員和消費者能夠快速了解和使用 API。Swagger 通常與各種編程語言和框架一起使用,以簡化 API 的開發(fā)和維護過程。 1.文件

    2024年02月04日
    瀏覽(90)
  • IntelliJ IDEA運行SpringBoot項目,手把手教你運行

    IntelliJ IDEA運行SpringBoot項目,手把手教你運行

    IDEA JDK1.8 MySQL8.0 Maven 一:配置maven 第一步 :用IDEA打開項目,開始配置maven環(huán)境 ,如果本地沒有提前配置好maven,就用IDEA默認的配置即可 第二步:配置maven步驟 出現(xiàn)情況1 :如果本地沒有配置過maven,可以保持如下默認配置 (未配置直接忽略出現(xiàn)情況2) 出現(xiàn)情況2 :如果本地

    2024年02月09日
    瀏覽(33)
  • 手把手教你搭建VideoReTalking的AI數(shù)字人項目

    手把手教你搭建VideoReTalking的AI數(shù)字人項目

    提示:本文的安裝包下載時間為2023-8-15日,項目還在更新中,可能會有出入,僅供大家參考。 提示:先下載好項目預(yù)先需要各種安裝包與預(yù)訓(xùn)練模型 注意:如果你跟我一樣家庭網(wǎng)速感人,可以考慮使用: https://ghproxy.com/ 加速代理 則可以加速下載包的速度 例如地址:https://ghp

    2024年02月06日
    瀏覽(100)
  • 【Docker】手把手教你搭建好玩的docker項目合集

    【Docker】手把手教你搭建好玩的docker項目合集

    這是我在使用docker后,慢慢一個個累計起來的項目,覺得還挺有意思的。 之后我會持續(xù)慢慢的更新新的項目,大伙如何有好玩的docker項目,歡迎來找我討論哇,我每天都會看私信的 docker搭建數(shù)據(jù)庫 使用docker安裝數(shù)據(jù)庫是非常省事的,而且想安什么類型的數(shù)據(jù)就安什么類型的

    2024年02月07日
    瀏覽(19)
  • 【零基礎(chǔ)】手把手教你使用Docker部署Springboot項目(詳細版)

    【零基礎(chǔ)】手把手教你使用Docker部署Springboot項目(詳細版)

    ???本篇文章適合剛學完Docker,想要部署Springboot項目的小白;當然,如果你還沒有學習Docker,只要嚴格按照本篇文章的步驟執(zhí)行,理論上也是可以完成部署的。 ??我接下來部署的項目都是以一臺全新Liunx服務(wù)器視角來操作,該服務(wù)器上jdk,mysql和Docker都還沒有安裝。 ?

    2024年01月20日
    瀏覽(28)
  • 前端小程序,手把手教你從零開始做一個酷炫的扭蛋機十連抽動畫效果

    前端小程序,手把手教你從零開始做一個酷炫的扭蛋機十連抽動畫效果

    其實沒有做多復(fù)雜的效果,連 canvas 都沒用上,都是一些簡單的平面變換,不過一段看似復(fù)雜的動畫往往都是幾個簡單的變換拼接而成,所以我們逐步拆解,很簡單的就能得到一個扭蛋機十連抽效果。 語言環(huán)境 我這邊使用的是?tailwindcss 和 ts,在 uniapp? + vue3 的情況下寫的小

    2024年04月13日
    瀏覽(107)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包