java怎么写crud_Spring Boot 中 crud如何优雅的实现-附代码

本文探讨了在Spring Boot项目中优雅实现CRUD操作的四种方法,从直接编写控制器到使用抽象基类、Spring Data REST,最后介绍了一个名为ControllerHelper的解决方案,该方案可以在不改变数据格式的情况下简化CRUD操作。文章通过代码示例展示了每种方法的优缺点,并指出ControllerHelper可以作为项目的实用工具。
摘要由CSDN通过智能技术生成

导读

在目前接触过的项目中大多数的项目都会涉及到: crud相关的操作, 哪如何优雅的编写crud操作呢?

带着这个问题,我们发现项目中大量的操作多是 创建实体 、删除实例、 修改实体、 查询单个实体、 分页查询多个实体, 我们有没有好的方式解决呢?

下面我给出crud编写的四种方式 循序渐进 ,并分析其优势劣势,希望有一种能适合你,如果你有其他方式可以留言讨论,在此权当抛砖引玉。

以下内容基于Spring Boot 、Spring MVC、 Spring Data JPA 如果你使用的也是相同的技术栈可以继续往下阅读,如果不是可以当作参考。

crud编写的四种方式

1 裸写crud

最简单最粗暴也是使用最多的一种方式,在写的多了之后可以用生成工具生成。

import lombok.AllArgsConstructor;

import org.springframework.beans.BeanUtils;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.*;

/**

* @author yangrd

* @date 2019/3/4

**/

@AllArgsConstructor

@RestController

@RequestMapping("/api/banner")

public class BannerController {

private BannerRepository repository;

@PostMapping

@ResponseStatus(HttpStatus.CREATED)

public Banner save(Banner banner) {

return repository.save(banner);

}

@DeleteMapping("/{id}")

@ResponseStatus(HttpStatus.NO_CONTENT)

public void delete(@PathVariable Long id) {

repository.deleteById(id);

}

@PutMapping("/{id}")

public void update(@PathVariable("id") Banner db, @RequestBody Banner banner) {

BeanUtils.copyProperties(banner, db);

repository.save(db);

}

@GetMapping

public Page findAll(Pageable pageable) {

return repository.findAll(pageable);

}

@GetMapping("/{id}")

public Banner finOne(@PathVariable("id") Banner banner) {

return banner;

}

}

优势:能控制到代码的每一行并非所有的增删改查都需要

劣势:在业务简单的情况下会编写大量的类似代码 这个时候我们可以用泛型与继承解决 引出 AbstractCrudController

2 extend BaseCrudController

使用抽象的能力,通过抽象类对相同的代码进行封装,减少子类继续编写重复的代码。

import com.st.cms.common.spring.jpa.AbstractEntity;

import org.springframework.beans.BeanUtils;

import org.springframework.beans.fa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值