Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / spring_lab4.pdf
Скачиваний:
0
Добавлен:
28.06.2026
Размер:
111.26 Кб
Скачать

@Repository

public interface NotificationRepository extends JpaRepository<Notification, Long> {

List<Notification> findByStatus(NotificationStatus status);

List<Notification> findByChannel(NotificationChannel channel);

List<Notification> findByRecipientId(Long recipientId);

}

Часть 4. Реализация CRUD для User

4.1. Создайте UserService

package org.example.service;

import lombok.RequiredArgsConstructor; import org.example.model.dto.UserDto; import org.example.model.entity.User;

import org.example.repository.UserRepository; import org.springframework.stereotype.Service;

import java.time.LocalDateTime; import java.util.List;

@Service

@RequiredArgsConstructor public class UserService {

private final UserRepository userRepository;

public User createUser(UserDto request) { User user = new User(); user.setName(request.getName()); user.setEmail(request.getEmail()); user.setPhone(request.getPhone());

user.setDeviceToken(request.getDeviceToken());

user.setTelegramChatId(request.getTelegramChatId());

user.setCreatedAt(LocalDateTime.now()); return userRepository.save(user);

}

public List<User> getAllUsers() { return userRepository.findAll();

}

public User getUserById(Long id) {

return userRepository.findById(id).orElseThrow();

}

9

public User updateUser(Long id, UserDto request) {

User user = userRepository.findById(id).orElseThrow(); user.setName(request.getName()); user.setEmail(request.getEmail()); user.setPhone(request.getPhone()); user.setDeviceToken(request.getDeviceToken()); user.setTelegramChatId(request.getTelegramChatId()); return userRepository.save(user);

}

public void deleteUser(Long id) {

User user = userRepository.findById(id).orElseThrow(); userRepository.delete(user);

}

}

4.2. Создайте UserController

package org.example.controller;

import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.example.model.dto.UserDto; import org.example.model.entity.User; import org.example.service.UserService;

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

import java.util.List;

@RestController @RequestMapping("/users") @RequiredArgsConstructor public class UserController {

private final UserService userService;

@PostMapping("/add")

public UserDto createUser(@RequestBody @Valid UserDto request) { User response = userService.createUser(request);

return UserDto.builder()

.name(response.getName())

.email(response.getEmail())

.phone(response.getPhone())

.telegramChatId(response.getTelegramChatId())

.deviceToken(response.getDeviceToken())

.createdAt(response.getCreatedAt())

.build();

}

10

@GetMapping("/all")

public List<UserDto> getAllUsers() {

return userService.getAllUsers().stream()

.map(r -> UserDto.builder()

.name(r.getName())

.email(r.getEmail())

.phone(r.getPhone())

.telegramChatId(r.getTelegramChatId())

.deviceToken(r.getDeviceToken())

.createdAt(r.getCreatedAt())

.build())

.toList();

}

@GetMapping("/{id}")

public UserDto getUserById(@PathVariable Long id) { User response = userService.getUserById(id); return UserDto.builder()

.name(response.getName())

.email(response.getEmail())

.phone(response.getPhone())

.telegramChatId(response.getTelegramChatId())

.deviceToken(response.getDeviceToken())

.createdAt(response.getCreatedAt())

.build();

}

@PutMapping("/{id}")

public UserDto updateUser(@PathVariable Long id, @RequestBody @Valid UserDto request) {

User response = userService.updateUser(id, request); return UserDto.builder()

.name(response.getName())

.email(response.getEmail())

.phone(response.getPhone())

.telegramChatId(response.getTelegramChatId())

.deviceToken(response.getDeviceToken())

.createdAt(response.getCreatedAt())

.build();

}

@DeleteMapping("/{id}")

public String deleteUser(@PathVariable Long id) { userService.deleteUser(id);

return String.format("Пользователь %s удален", id);

}

}

4.3.Проверьте работу CRUD-операций для User

POST http://localhost:8080/users/add

11

Соседние файлы в папке Методички