Как проверять значения в базе данных

112
10 октября 2021, 08:10

Я обрабатываю Post запрос с Json данными, как мне их добавлять в базу данных, чтобы была проверка, которая узнавала, есть ли в базе данных уже этот пользователь или нет, если нет, то создать новую строку, если есть, то для этого пользователя обновить сообщения.

То, что принимаю в запросе: phone, message

Не совсем понимаю как это реализовать.

UserController

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepo userRepo;
    @PostMapping(consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public String createUser(@Valid @RequestBody User requestUserDetails) {
        userRepo.save(requestUserDetails);
        return "The message delivered.";
    }
}

User

    @Entity
    @Table(name = "ApiTable", schema = "TestApi")
    public class User {
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Integer id;
        private String phone;
        private String message;

        public String getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        public String getMessage() {
            return message;
        }
        public void setLastName(String message) {
            this.message = message;
        }
    }
Answer 1

Ответ дали здесь.

Оказывается, что нас уже всё предусмотрено вот здесь: userRepo.save(requestUserDetails);

Save отвечает за сохранение наших данных в базу данных и также, когда он находит по уникальному идентификатору такого же пользователя - для него обновит информацию, но, если такой пользователь не был найден, создастся новая строка в базе данных. Если перейти по ссылке, которую предоставил выше, то там ответили, что можно и предусмотреть вариант, если нам не нравится такой подход и сами хотим меня информацию, то можно использовать вот такой код:

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepo userRepo;
    @PostMapping(consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public String createUser(@Valid @RequestBody User requestUserDetails) {
        User user = requestUserDetails;
        if(requestUserDetails.getId() != null) {
            Optional<User> userOpt = userRepo.findById(requestUserDetails.getId());
            if (userOpt.isPresent()) {
                user = userOpt.get();
                // пользователь существует... сделать что-нибудь..
            }
        }
        // в конце концов, сохраните пользователя в любом случае (даже, если он существует или нет).
        userRepo.save(user);
        return "The message delivered.";
    }
}
READ ALSO
Windows API CreateFile

Windows API CreateFile

Как мне узнать существует ли такой файл, которому обращается программа или он занят другой программой? CreateFile возвращает только -1В CreateFile...

299
C++ MinGW-w64 WinAPI: как заполнить ComboBox строками

C++ MinGW-w64 WinAPI: как заполнить ComboBox строками

winapi, пытаюсь заполнить combobox строками но в них попадает только первая буква из списка, пытался вывести в консоль, выводится адрес первой буквы,как...

95
Найти &#39;1&#39; в числе

Найти '1' в числе

Возможно только через математическое выражение определить, есть ли в числе единица?

107
как найти максимальную разницу между двумя соседними элементами массива?

как найти максимальную разницу между двумя соседними элементами массива?

Написал код, создал динамический массив , по заданию нужно указать максимальную разность между двумя соседними элементами массива и выделить...

89