Я обрабатываю 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;
}
}
Ответ дали здесь.
Оказывается, что нас уже всё предусмотрено вот здесь: 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.";
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как мне узнать существует ли такой файл, которому обращается программа или он занят другой программой? CreateFile возвращает только -1В CreateFile...
winapi, пытаюсь заполнить combobox строками но в них попадает только первая буква из списка, пытался вывести в консоль, выводится адрес первой буквы,как...
Возможно только через математическое выражение определить, есть ли в числе единица?
Написал код, создал динамический массив , по заданию нужно указать максимальную разность между двумя соседними элементами массива и выделить...