SpringBoot ——簡單開發流程實戰

????????本文使用SpringBoot進行電商系統商品數據增刪改查的簡單開發流程。

本文目錄

      • 一、創建Spring Boot項目
      • 二、配置數據庫連接
      • 三、創建實體類
      • 四、創建Repository接口
      • 五、創建Service層
      • 六、創建Controller層
      • 七、測試

一、創建Spring Boot項目

可以通過https://start.spring.io/或者IDEA創建,需添加對應的依賴

 <!-- JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- 數據庫驅動 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

在這里插入圖片描述


二、配置數據庫連接

src/main/resources 目錄下找到 application.properties 文件,添加數據庫連接配置,用戶名和密碼自行修改:

spring.datasource.url=jdbc:mysql://localhost:3306/ecommerce?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=用戶名
spring.datasource.password=密碼
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true



三、創建實體類

src/main/java 目錄下創建實體類 Product,用于表示商品數據:

package com.example.ecommerceproduct.entity;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private double price;private String description;// 無參構造函數public Product() {}// 有參構造函數public Product(String name, double price, String description) {this.name = name;this.price = price;this.description = description;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}
}

這里可以使用lombok簡化實體類

實體對應sql

CREATE TABLE IF NOT EXISTS Product (-- 商品IDid BIGINT AUTO_INCREMENT PRIMARY KEY,-- 商品名稱name VARCHAR(255) NOT NULL,-- 商品價格price DECIMAL(10, 2) NOT NULL,-- 商品描述description char(255)
);

并且預制了一些數據:
在這里插入圖片描述


四、創建Repository接口

創建 ProductRepository 接口,用于與數據庫進行交互:

package com.example.ecommerceproduct.repository;import com.example.ecommerceproduct.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;public interface ProductRepository extends JpaRepository<Product, Long> {
}



五、創建Service層

創建 ProductService 類,處理業務邏輯:

package com.example.ecommerceproduct.service;import com.example.ecommerceproduct.entity.Product;
import com.example.ecommerceproduct.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Optional;@Service
public class ProductService {@Autowiredprivate ProductRepository productRepository;// 添加商品public Product addProduct(Product product) {return productRepository.save(product);}// 獲取所有商品public List<Product> getAllProducts() {return productRepository.findAll();}// 根據ID獲取商品public Optional<Product> getProductById(Long id) {return productRepository.findById(id);}// 更新商品信息public Product updateProduct(Long id, Product updatedProduct) {return productRepository.findById(id).map(product -> {product.setName(updatedProduct.getName());product.setPrice(updatedProduct.getPrice());product.setDescription(updatedProduct.getDescription());return productRepository.save(product);}).orElse(null);}// 刪除商品public void deleteProduct(Long id) {productRepository.deleteById(id);}
}



六、創建Controller層

創建 ProductController 類,處理HTTP請求:

package com.example.ecommerceproduct.controller;import com.example.ecommerceproduct.entity.Product;
import com.example.ecommerceproduct.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;import java.util.List;
import java.util.Optional;@RestController
@RequestMapping("/api/products")
public class ProductController {@Autowiredprivate ProductService productService;// 添加商品@PostMappingpublic ResponseEntity<Product> addProduct(@RequestBody Product product) {Product savedProduct = productService.addProduct(product);return new ResponseEntity<>(savedProduct, HttpStatus.CREATED);}// 獲取所有商品@GetMappingpublic ResponseEntity<List<Product>> getAllProducts() {List<Product> products = productService.getAllProducts();return new ResponseEntity<>(products, HttpStatus.OK);}// 根據ID獲取商品@GetMapping("/{id}")public ResponseEntity<Product> getProductById(@PathVariable Long id) {Optional<Product> product = productService.getProductById(id);return product.map(value -> new ResponseEntity<>(value, HttpStatus.OK)).orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));}// 更新商品信息@PutMapping("/{id}")public ResponseEntity<Product> updateProduct(@PathVariable Long id, @RequestBody Product updatedProduct) {Product product = productService.updateProduct(id, updatedProduct);if (product != null) {return new ResponseEntity<>(product, HttpStatus.OK);} else {return new ResponseEntity<>(HttpStatus.NOT_FOUND);}}// 刪除商品@DeleteMapping("/{id}")public ResponseEntity<Void> deleteProduct(@PathVariable Long id) {productService.deleteProduct(id);return new ResponseEntity<>(HttpStatus.NO_CONTENT);}
}



七、測試

啟動Spring Boot應用程序,訪問以下接口進行測試:
http://localhost:8080/api/products
在這里插入圖片描述

可以看到操作的數據了,這樣就完成了一個簡單的Spring Boot電商系統商品數據增刪改查的開發了,當然可以根據這些自行擴展需要實現的功能。


← 上一篇 Java進階——Stream流以及常用方法詳解
記得點贊、關注、收藏哦!
下一篇 Java進階——注解一文全懂 →

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71182.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fastadmin 后臺商品sku(vue)

先上個效果圖 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…

LeetCode 718 - 最長重復子數組

LeetCode 718 - 最長重復子數組 是一個典型的數組和字符串問題&#xff0c;適合考察動態規劃、滑動窗口和二分查找等多種編程能力。掌握其多種解法及變體能夠有效提高處理字符串和數組算法的能力。 題目描述 輸入: 兩個整數數組 nums1 和 nums2。輸出: 兩個數組中存在的最長的…

LeetCode 0132.分割回文串 II:動態規劃

【LetMeFly】132.分割回文串 II&#xff1a;動態規劃 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-ii/ 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是回文串。 返回符合要求的 最少分割次數 。 示例 …

iOS 實現UIButton自動化點擊埋點

思路&#xff1a;我們HOOK UIControl的 addtarget:action:forControlEvents方法&#xff0c;交換UIControl的 addtarget:action:forControlEvents 方法的實現&#xff0c; 在交換的方法中添加原來響應的同時&#xff0c;再添加一個埋點響應&#xff0c;該響應方法實現了點擊埋點…

C++藍橋杯基礎篇(六)

片頭 嗨~小伙伴們&#xff0c;大家好&#xff01;今天我們來一起學習藍橋杯基礎篇&#xff08;六&#xff09;&#xff0c;練習相關的數組習題&#xff0c;準備好了嗎&#xff1f;咱們開始咯&#xff01; 第1題 數組的左方區域 這道題&#xff0c;實質上是找規律&#xff0c;…

git -學習筆記

目錄 基本操作語法 設置用戶和郵箱 版本回退 工作區和暫存區 撤銷修改 刪除與恢復 一工作區刪除了&#xff0c;但是暫存區沒刪除 二工作區誤刪了&#xff0c;暫存區還有 github-Git 連接 報錯解決-push遠程倉庫被拒絕 遠程庫 分支 分支沖突 儲藏分支 回到當前分…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的電腦本地部署一下DeepSeek試試&#xff0c;由于不希望污染電腦的Windows環境&#xff0c;所以在wsl中安裝了ollama&#xff0c;使用ollama拉取DeepSeek模型。然后在Windows中安裝了Docker Desktop&#xff0c;在Docker中部署了Open-WebUI&#xff0c;最后再在Ope…

力扣785. 判斷二分圖

力扣785. 判斷二分圖 題目 題目解析及思路 題目要求將所有節點分成兩部分&#xff0c;每條邊的兩個端點都必須在不同集合中 二分圖&#xff1a;BFS/DFS/并查集 因為圖不一定聯通&#xff0c;所以枚舉所有點都做bfs(如果沒聯通的話) 代碼 class Solution { public:bool is…

springboot之集成Elasticsearch

目錄 二、Elasticsearch 是什么&#xff1f;三、Elasticsearch 安裝四、Springboot 集成 Elasticsearch 的方式五、創建項目集成 Elasticsearch 2.創建 Spring Initializr 項目 es &#xff08;3&#xff09;.新建實體類 User&#xff08;4&#xff09;.新建 dao 接口類 UserR…

[Lc滑動窗口_1] 長度最小的數組 | 無重復字符的最長子串 | 最大連續1的個數 III | 將 x 減到 0 的最小操作數

目錄 1. 長度最小的字數組 題解 代碼 ?2.無重復字符的最長子串 題解 代碼 3.最大連續1的個數 III 題解 代碼 4.將 x 減到 0 的最小操作數 題解 代碼 1. 長度最小的字數組 題目鏈接&#xff1a;209.長度最小的字數組 題目分析: 給定一個含有 n 個 正整數 的數組…

數據集筆記:新加坡 地鐵(MRT)和輕軌(LRT)票價

數據連接 data.gov.sg 2024 年 12 月 28 日起生效的新加坡地鐵票價 該數據集包含 MRT 和 LRT 票價的信息&#xff0c;包括&#xff1a; 票價類型&#xff08;Fare Type&#xff09;&#xff1a;成人票、學生票、老年人票、殘障人士票等。適用時間&#xff08;Applicable Tim…

湘潭大學計算機復試詳細攻略(調劑)

一&#xff0c;寫在前面的話 ① 首先&#xff0c;能完成考試初試來到這里的都是勇士。不管結果如何&#xff0c;不管成績如何。我都在這里真心的祝福你以后一帆風順。 ② 目前學歷貶值嚴重&#xff0c;如果是成績不理想的話&#xff0c;我建議能工作就去工作&#xff0c;工作不…

【前端基礎】Day 3 CSS-2

目錄 1. Emmet語法 1.1 快速生成HTML結構語法 1.2 快速生成CSS樣式語法 2. CSS的復合選擇器 2.1 后代選擇器 2.2 子選擇器 2.3 并集選擇器 2.4 偽類選擇器 2.4.1 鏈接偽類選擇器 2.4.2 focus偽類選擇器 2.5 復合選擇器總結 3. CSS的元素顯示模式 3.1 什么是元素顯示…

不同數據類型在數據庫和編程語言之間的對應關系表

不同數據類型在數據庫和編程語言之間的對應關系表 MySql 與 C# MySqlC#varcharstringbigintlongbigint unsignedulongintintint unsigneduintsmallintshortsmallint unsignedushortVARCHAR(36)GuidsmalldatetimeDateTimedateDateTimedatetimeDateTimetimestampDateTimefloatf…

RabbitMQ操作實戰

1.RabbitMQ安裝 RabbitMQ Windows 安裝、配置、使用 - 小白教程-騰訊云開發者社區-騰訊云下載erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安裝RabbitMQ及延時消息插件rabbitmq_delayed_message_exch…

DeepSeek教unity------UI元素長按響應

主要功能說明&#xff1a; ?長按檢測&#xff1a;通過記錄指針按下的時間&#xff0c;判斷是否達到 longClickTime&#xff0c;從而觸發長按事件。?狀態管理&#xff1a;使用 StateEnum 枚舉管理點擊項的當前狀態&#xff08;未按下、按下等待長按、長按已觸發&#xff09;。…

【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工藝&#xff0c;搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼&#xff0c;支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU&#xff0c;可用于輕量級人工…

stm32hal庫尋跡+藍牙智能車(STM32F103C8T6)

簡介: 這個小車的芯片是STM32F103C8T6&#xff0c;其他的芯片也可以照貓畫虎,基本配置差不多,要注意的就是,管腳復用,管腳的特殊功能,(這點不用擔心,hal庫每個管腳的功能都會給你羅列,很方便的.)由于我做的比較簡單,只是用到了幾個簡單外設.主要是由帶霍爾編碼器電機的車模,電機…

SQL命令詳解之操作數據庫

操作數據庫 SQL是用于管理和操作關系型數據庫的標準語言。數據庫操作是SQL的核心功能之一&#xff0c;主要用于創建、修改和刪除數據庫對象&#xff0c;如數據庫、表、視圖和索引等。以下是SQL中常見的數據庫操作命令及其功能簡介&#xff1a; 1. 查詢數據庫 查詢所有的數據庫…

Go紅隊開發—編解碼工具

文章目錄 開啟一個項目編解碼工具開發Dongle包Base64編解碼摩斯密碼URL加解密AES加解密 MD5碰撞工具開發 開啟一個項目 這作為補充內容&#xff0c;可忽略直接看下面的編解碼&#xff1a; 一開始用就按照下面的步驟即可 1.創建一個文件夾&#xff0c;你自己定義名字(建議只用…