[SpringBoot+Jpa框架搭建 ]

目录

 🌄方式一:Spring Initializr 的 Web页面创建项目

 🌄方式二:使用 IDEA 创建项目

 🌄创建一个新的Spring Boot项目

 🌄编写实体类

 🌄创建一个Spring Boot控制器

 🌄创建UserRepository

 🌄创建异常类

 🌄配置应用程序

 🌄运行DemoApplication.java中的main方法,启动应用程序。


 🌄方式一:
Spring Initializr 的 Web页面创建项目

  • 1、打开 https://start.spring.io/
  • 2、填写项目信息
  • 3、点击”Generate Project“按钮生成项目;下载此项目
  • 4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。
  • 5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

 🌄方式二:
使用 IDEA 创建项目

  • 1、创建一个新项目
  • 2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
  • 3、填写项目信息
  • 4、选择初始化的组件(初学勾选 Web 即可)
  • 5、填写项目路径
  • 6、等待项目构建成功

 

 🌄创建一个新的Spring Boot项目

首先,我们需要在Maven中创建一个新的Spring Boot项目。在pom.xml中添加所需的依赖,比如Spring Boot Web,JPA,MySQL驱动等。具体核心依赖项如下

<dependencies>
    <!-- Spring Boot Web依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot JPA依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL驱动依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
</dependencies>

 

 🌄编写实体类

我们需要先定义一个实体类来映射数据库中的表。在src/main/java目录下创建一个名为“com.example.demo.entity”的包,并在其中创建一个名为“User”的Java类,代码如下:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

在这里,我们使用了JPA(Java Persistence API)来创建实体类。使用@Entity注释来标识这是一个实体类,@Table注释来指定该类映射到数据库中的表。@Id注释将id字段标记为主键,@GeneratedValue指定主键自增策略,@Column指定字段名。

 🌄创建一个Spring Boot控制器

在src/main/java目录下创建一个名为“com.example.demo.controller”的包,并在其中创建一个名为“UserController”的Java类,代码如下:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping("")
    public List<User> findAll() {
        return userRepository.findAll();
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable("id") Long id) {
        return userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
    }

    @PostMapping("")
    public User addUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
        user.setName(userDetails.getName());
        user.setAge(userDetails.getAge());
        return userRepository.save(user);
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {
        User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
        userRepository.delete(user);
        return ResponseEntity.ok().build();
    }
}

 🌄创建UserRepository

在src/main/java目录下创建一个名为“com.example.demo.repository”的包,并在其中创建一个名为“UserRepository”的Java接口,代码如下:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

在这里,我们使用了Spring Data JPA提供的JpaRepository接口,该接口提供了一些常见的CRUD操作。@Repository注解用于将接口标识为一个Spring Bean。

 🌄创建异常类

在src/main/java目录下创建一个名为“com.example.demo.exception”的包,并在其中创建一个名为“ResourceNotFoundException”的Java类,代码如下:

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) {
        super(String.format("%s not found with %s : '%s'", resourceName, fieldName, fieldValue));
    }
}

在这里,我们创建了一个名为“ResourceNotFoundException”的自定义异常类,用于处理资源未找到的情况。使用@ResponseStatus注释来指定返回的HTTP状态码。

 🌄配置应用程序

在application.properties或application.yml文件中配置应用程序,如端口、数据库连接等。

application.properties配置:

 
 

server.port=8080

# 数据库连接信息

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=root

# 数据库驱动
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

# JPA配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
 

 🌄运行DemoApplication.java中的main方法,启动应用程序。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,针对你的问题,我可以为你提供一些思路和建议。 首先,你需要明确购物车功能的需求和实现方式。购物车功能通常需要记录用户选择的商品信息、数量、价格等,并提供添加、修改、删除购物车商品等操作。 在技术实现方面,你可以选择使用 Spring Boot 框架搭建项目,并集成 MariaDB 数据库和 JPA 框架实现数据持久化。具体步骤可以参考以下流程: 1. 创建 Spring Boot 项目,并添加相关依赖,如 Spring Boot WebSpring Data JPA、MariaDB 驱动等。 2. 创建商品和购物车实体类,并使用 JPA 注解定义实体属性和关联关系。如: 商品实体类: ``` @Entity @Table(name = "product") public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private BigDecimal price; // 省略其他属性和方法 } ``` 购物车实体类: ``` @Entity @Table(name = "cart") public class Cart { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "user_id", nullable = false) private User user; @ManyToOne @JoinColumn(name = "product_id", nullable = false) private Product product; @Column(nullable = false) private Integer quantity; // 省略其他属性和方法 } ``` 3. 创建用户实体类,并添加购物车属性和关联关系。如: 用户实体类: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String username; @OneToMany(mappedBy = "user") private List<Cart> carts = new ArrayList<>(); // 省略其他属性和方法 } ``` 4. 创建商品和购物车的 Repository 接口,并继承 JPA 的 CrudRepository 接口实现数据访问和操作。如: 商品 Repository 接口: ``` public interface ProductRepository extends CrudRepository<Product, Long> { // 省略自定义方法 } ``` 购物车 Repository 接口: ``` public interface CartRepository extends CrudRepository<Cart, Long> { List<Cart> findByUser(User user); } ``` 5. 创建商品和购物车的 Service 类,并注入对应的 Repository 实现业务逻辑。如: 商品 Service 类: ``` @Service public class ProductService { @Autowired private ProductRepository productRepository; // 省略自定义方法 } ``` 购物车 Service 类: ``` @Service public class CartService { @Autowired private CartRepository cartRepository; // 省略自定义方法 } ``` 6. 创建商品和购物车的 Controller 类,并注入对应的 Service 处理 HTTP 请求和响应。如: 商品 Controller 类: ``` @RestController @RequestMapping("/api/products") public class ProductController { @Autowired private ProductService productService; // 省略 HTTP 方法和请求处理 } ``` 购物车 Controller 类: ``` @RestController @RequestMapping("/api/carts") public class CartController { @Autowired private CartService cartService; // 省略 HTTP 方法和请求处理 } ``` 7. 最后,你可以实现购物车功能的具体操作,如添加商品到购物车、修改购物车商品数量、删除购物车商品等。具体实现可以参考以下代码: 添加商品到购物车: ``` @PostMapping("/{productId}/add") public void addToCart(@PathVariable Long productId, @RequestBody Integer quantity, Principal principal) { String username = principal.getName(); User user = userService.findByUsername(username); Product product = productService.findById(productId); Cart cart = cartService.findByUserAndProduct(user, product); if (cart != null) { cart.setQuantity(cart.getQuantity() + quantity); } else { cart = new Cart(); cart.setUser(user); cart.setProduct(product); cart.setQuantity(quantity); } cartService.save(cart); } ``` 修改购物车商品数量: ``` @PutMapping("/{cartId}") public void updateCart(@PathVariable Long cartId, @RequestBody Integer quantity) { Cart cart = cartService.findById(cartId); cart.setQuantity(quantity); cartService.save(cart); } ``` 删除购物车商品: ``` @DeleteMapping("/{cartId}") public void deleteCart(@PathVariable Long cartId) { cartService.deleteById(cartId); } ``` 以上是一个简单的购物车功能的实现思路和代码示例,你可以根据实际需求进行修改和扩展。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值