Если вы наследуете от класса Model (как и должно быть), он предоставляет метод save()
, а также атрибут ID.Когда вы вызываете save()
для объекта, который вы получили из базы данных, он будет обновлен, а если вы вызовете его для нового объекта, он будет сохранен в базе данных.Все это автоматически!
Обновление только определенных полей
Model.save()
сохраняет весь объект, поэтому, если вы хотите обновить только некоторые поля данных в вашем объекте, вам сначала нужно создать точный объектВы хотите зайти в свою базу данных.Допустим, вы не хотите обновлять пустые поля, используя ваш Topic(id, content, author)
объект:
Topic newT = Topic(1L, 'yyy', null);
Long id = newT.getID();
Topic oldT = Topic.findByID(id); //Retrieve the old values from the database
Author newAuthor = newT.getAuthor(); //null
if (newAuthor != null) { //This test will fail
oldT.setAuthor(newAuthor); //Update the old object
}
String newContent = newT.getContent(); //Not null
if (newContent != null) {
oldT.setContent(newContent); //Update the old object
}
// Now the object oldT holds all the new, non-null data. Change the update tests as you see fit, of course, and then...
oldT.save(); //Update the object in the database.
Вот как я бы это сделал.В зависимости от того, сколько полей у вас есть, этот код очень быстро станет неуклюжим.Определенно поместите это в метод.Также, см. Здесь о findByID () и других способах извлечения объектов из базы данных.