📜  Angular + Spring Boot CRUD示例(1)

📅  最后修改于: 2023-12-03 14:59:17.638000             🧑  作者: Mango

使用 Angular 和 Spring Boot 实现 CRUD 操作

在本示例中,我们将介绍如何使用 Angular 和 Spring Boot 实现 CRUD 操作。我们将创建一个简单的 web 应用程序,该应用程序将允许用户执行以下操作:

  • 创建新的用户
  • 查看现有用户
  • 更新现有用户
  • 删除现有用户
开始之前

请确保您安装了以下软件和工具:

  • JDK 11 或更高版本
  • Node.js 10.13 或更高版本
  • npm 包管理器 6.4 或更高版本
  • Angular CLI 6.0 或更高版本
  • PostgreSQL 数据库
创建 Spring Boot 应用程序

使用以下命令创建一个新的 Spring Boot 应用程序:

$ mvn spring-boot:run

要检查应用程序是否正在运行,请使用浏览器访问 http://localhost:8080。您应该看到以下内容:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Jan 08 08:04:26 CST 2021
There was an unexpected error (type=Not Found, status=404).
No message available
创建 Angular 应用程序

使用以下命令创建一个新的 Angular 应用程序:

$ ng new frontend

然后将进入项目目录并使用以下命令运行该应用程序:

$ cd frontend
$ ng serve

现在,您可以在浏览器中访问 http://localhost:4200 来查看您的应用程序。

连接数据库

启动 PostgreSQL 数据库并创建一个新的数据库和用户。可以使用以下命令执行此操作:

$ sudo -u postgres psql
password=# create database users;
password=# create user dev with encrypted password 'password';
password=# grant all privileges on database users to dev;

在 Spring Boot 应用程序中,我们需要配置数据库连接。要执行此操作,请将以下代码添加到 application.properties 文件中:

spring.datasource.url=jdbc:postgresql://localhost:5432/users
spring.datasource.username=dev
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
创建实体类

在 Spring Boot 应用程序中,我们需要创建一个实体类来表示用户。以下是一个简单的实体类示例:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String email;
    private String phone;
    
    // getters and setters
}
创建存储库

在 Spring Boot 应用程序中,我们需要创建一个存储库来管理用户。以下是一个简单的存储库示例:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
创建控制器

在 Spring Boot 应用程序中,我们需要创建一个控制器来管理用户的 CRUD 操作。以下是一个简单的控制器示例:

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserRepository userRepository;
    
    @GetMapping
    public List<User> getUsers() {
        return userRepository.findAll();
    }
    
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }
    
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        User existingUser = userRepository.findById(id).orElse(null);
        existingUser.setName(user.getName());
        existingUser.setEmail(user.getEmail());
        existingUser.setPhone(user.getPhone());
        return userRepository.save(existingUser);
    }
    
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userRepository.deleteById(id);
    }
}
创建 Angular 组件

现在,我们将在 Angular 应用程序中创建组件来管理用户的 CRUD 操作。以下是一个简单的组件示例:

import { Component, OnInit } from '@angular/core';
import { User } from '../models/user';
import { UserService } from '../services/user.service';

@Component({
  selector: 'app-users',
  templateUrl: './users.component.html',
  styleUrls: ['./users.component.css']
})
export class UsersComponent implements OnInit {
  users: User[] = [];
  user: User = { name: '', email: '', phone: '' };

  constructor(private userService: UserService) {}

  ngOnInit() {
    this.userService.getUsers().subscribe(users => (this.users = users));
  }

  createUser() {
    this.userService.createUser(this.user).subscribe(_ => this.ngOnInit());
  }

   updateUser(user: User) {
    this.userService.updateUser(user).subscribe(_ => this.ngOnInit());
  }

  deleteUser(id: number) {
    this.userService.deleteUser(id).subscribe(_ => this.ngOnInit());
  }
}
创建 Angular 服务

在 Angular 应用程序中,我们需要创建服务来管理用户的 CRUD 操作。以下是一个简单的服务示例:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

import { User } from '../models/user';

@Injectable({
  providedIn: 'root'
})
export class UserService {
  private baseUrl = 'http://localhost:8080/api/users';

  constructor(private http: HttpClient) {}

  getUsers(): Observable<User[]> {
    return this.http.get<User[]>(this.baseUrl);
  }

  createUser(user: User): Observable<Object> {
    return this.http.post(`${this.baseUrl}`, user);
  }

   updateUser(user: User): Observable<Object> {
    return this.http.put(`${this.baseUrl}/${user.id}`, user);
  }

  deleteUser(id: number): Observable<Object> {
    return this.http.delete(`${this.baseUrl}/${id}`);
  }
}
创建 Angular 模型类

在 Angular 应用程序中,我们需要创建一个模型类来表示用户。以下是一个简单的模型类示例:

export interface User {
  id?: number;
  name: string;
  email: string;
  phone: string;
}
创建 Angular 模板

现在,我们将在 Angular 应用程序中创建模板来显示和管理用户的 CRUD 操作。以下是一个简单的模板示例:

<div class="users">
  <h2>Users</h2>

  <table>
    <thead>
      <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Phone</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <tr *ngFor="let user of users">
        <td>{{ user.name }}</td>
        <td>{{ user.email }}</td>
        <td>{{ user.phone }}</td>
        <td>
          <button (click)="deleteUser(user.id)">Delete</button>
        </td>
      </tr>
    </tbody>
  </table>

  <h2>Add user</h2>

  <form>
    <input type="text" [(ngModel)]="user.name" placeholder="Name" />
    <input type="text" [(ngModel)]="user.email" placeholder="Email" />
    <input type="text" [(ngModel)]="user.phone" placeholder="Phone" />
    <button (click)="createUser()">Add</button>
  </form>

  <h2>Edit user</h2>

  <table>
    <thead>
      <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Phone</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <tr *ngFor="let user of users">
        <td><input type="text" [(ngModel)]="user.name" /></td>
        <td><input type="text" [(ngModel)]="user.email" /></td>
        <td><input type="text" [(ngModel)]="user.phone" /></td>
        <td>
          <button (click)="updateUser(user)">Save</button>
        </td>
      </tr>
    </tbody>
  </table>
</div>
测试应用程序

现在,我们可以使用以下命令运行 Angular 应用程序:

$ ng serve

然后,我们可以在浏览器中访问 http://localhost:4200 来查看应用程序。您应该看到以下内容:

Users

Name   Email            Phone
John   john@example.com 555-555-5555
Jane   jane@example.com 555-555-5555

Add user

Name  Email           Phone
      john@example.com123-456-7890
      jane@example.com123-456-7890
      bob@example.com 123-456-7890

Edit user

Name Email Phone

John john@example.com 555-555-5555 Save
Jane jane@example.com 555-555-5555 Save
总结

在本示例中,我们介绍了如何使用 Angular 和 Spring Boot 实现 CRUD 操作。我们创建了一个包含所有 CRUD 操作的简单的 web 应用程序,并在其中使用了 PostgreSQL 数据库。我们还介绍了如何在 Angular 应用程序中创建组件、服务、模型类和模板。