基于Spring Boot的进销存系统开发
进销存系统是现代企业中不可或缺的一部分,其主要功能包括管理商品的进货、销售和库存。本文将介绍如何使用Spring Boot框架开发一个简单的进销存系统,并提供一些基本的代码示例。
一、项目结构
在开始之前,我们首先构建一个基本的项目结构:
inventory-system
│
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── inventory
│ │ │ ├── InventoryApplication.java
│ │ │ ├── controller
│ │ │ ├── model
│ │ │ ├── repository
│ │ │ └── service
│ │ └── resources
│ │ ├── application.properties
│ │ └── static
│ └── test
│
└── pom.xml
二、依赖配置
在pom.xml
中添加必要的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
三、实体类
创建商品实体类Product
:
package com.example.inventory.model;
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 Integer quantity;
private Double price;
// Getters and Setters
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 Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
四、数据访问层
创建数据访问接口ProductRepository
:
package com.example.inventory.repository;
import com.example.inventory.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
五、服务层
创建服务类ProductService
:
package com.example.inventory.service;
import com.example.inventory.model.Product;
import com.example.inventory.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 {
@Autowired
private ProductRepository productRepository;
public List<Product> findAll() {
return productRepository.findAll();
}
public Product save(Product product) {
return productRepository.save(product);
}
public Optional<Product> findById(Long id) {
return productRepository.findById(id);
}
public void deleteById(Long id) {
productRepository.deleteById(id);
}
}
六、控制器层
创建控制器类ProductController
来处理HTTP请求:
package com.example.inventory.controller;
import com.example.inventory.model.Product;
import com.example.inventory.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public List<Product> getAllProducts() {
return productService.findAll();
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.save(product);
}
@GetMapping("/{id}")
public ResponseEntity<Product> getProductById(@PathVariable Long id) {
return productService.findById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteProduct(@PathVariable Long id) {
productService.deleteById(id);
return ResponseEntity.noContent().build();
}
}
七、配置文件
在application.properties
中配置H2数据库:
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
八、启动应用
在InventoryApplication.java
中启动Spring Boot应用:
package com.example.inventory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class InventoryApplication {
public static void main(String[] args) {
SpringApplication.run(InventoryApplication.class, args);
}
}
九、总结
本文介绍了如何使用Spring Boot构建一个简单的进销存系统,其主要功能包括商品的添加、查询和删除。虽然这个系统是一个基础示例,但可以根据具体需求扩展更多功能,如用户管理、报表生成等。通过Spring Boot的强大特性,我们能够快速开发出高效的企业管理系统。希望通过本篇文章的内容,能够帮助到正在学习或开发进销存系统的开发者们。