删除表中的每条记录时重新启动Id = 1? (角度 + Spring Boot + MySQL)

Posted

技术标签:

【中文标题】删除表中的每条记录时重新启动Id = 1? (角度 + Spring Boot + MySQL)【英文标题】:Restart Id=1 when deleting every record in a table? (Angular + Spring Boot + MySQL) 【发布时间】:2021-09-14 12:01:44 【问题描述】:

我正在开发一个简单的 CRUD 应用程序,前端使用 Angular,后端使用 Spring Boot,数据库使用 mysql

我已经设法插入、检索和更新/删除表中的值,但是当我从 CRUD 中删除所有记录时,我正在努力重新启动 Id 的值(我设置为主键)桌子。我的意思是,如果我有 10 条记录(Id = 1,...,10)并且我删除了所有记录,那么下一次插入的 Id=1 并且我希望它等于 1。我正在使用InnoDB 作为引擎。

前端部分-

.html 文件

  <button class="m-3 btn btn-sm btn-danger" (click)="removeAllRecords()">
    Remove All
  </button>

.ts 文件

  removeAllRecords(): void 
if(confirm("Are you sure you want to delete ALL your records?"))
this.recordService.deleteAll()
  .subscribe(
    response => 
      console.log(response);
      this.refreshList();
    ,
    error => 
      console.log(error);
    );
  

service.ts 文件

const baseUrl = 'http://localhost:8080/api/records';

deleteAll(): Observable<any> 
return this.http.delete(baseUrl);

后端部分 - 我在 Spring Boot 上使用 Datajpa 存储库:

模型文件

@Entity
@Table(name = "crud")
public class Record
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
....

控制器文件

@DeleteMapping("/records")
public ResponseEntity<HttpStatus> deleteAllRecords() 
    try 
        contactRepository.deleteAll();
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     catch (Exception e) 
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    


现在,我认为必须在上面的函数中或在表的定义上做一些事情,但我不明白是什么以及如何......请你帮帮我吗?

附:我在 application.properties 文件中使用这些设置:

spring.datasource.url= jdbc:mysql://localhost:3306/codejavadb?useSSL=false
spring.datasource.username= root
spring.datasource.password= *pwd*
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto= update

希望我说清楚了,我对所有这些工具和语法都很陌生,任何帮助将不胜感激,谢谢! :)

【问题讨论】:

【参考方案1】:

您可以直接添加一个逻辑来设置主键。在进行任何插入之前,请检查记录数。如果有记录,则下一个主键为+1。如果没有记录,它将返回 0,因此 +1 会将主键作为 1 分配给该插入。

【讨论】:

我会在哪一部分添加这个逻辑?在我在 Spring Boot 中定义的函数中?无论如何,“@GeneratedValue(strategy = GenerationType.IDENTITY)”中的逻辑不是已经存在了吗?

以上是关于删除表中的每条记录时重新启动Id = 1? (角度 + Spring Boot + MySQL)的主要内容,如果未能解决你的问题,请参考以下文章

(VBA)为表中的每条记录创建一个文件“pdf”

如何为mysql中的每条记录检索表中的两条记录

如何从左表中仅获取一条记录与右表中的每条记录

如何为数组中的每条记录设置一个属性的值

如何为 Oracle 11g 中分层表的每条记录分配父组 ID?

使用条件控制源控制报表中的每条记录