If you want to update a single or two field then use
@Query("UPDATE user SET first_name =:fname ,last_name=:lname WHERE email =:email")
int updateUser(String email,String fname, String lname);
And if you want to update too many field then there is no any custom update function in room to update multiple column data till now. But you can use some logic like.
Assume that you need to update last_name
@Entity(tableName = "user")
public class User {
@NonNull
@PrimaryKey
private int id;
private String user_id;
private String first_name;
private String last_name;
private String email;
}
First you get ObjectModel using select query.
@Query("SELECT * FROM user WHERE email = :email")
User getUser(String email);
then get id from that ObjectModel and set that id to your new ObjectModel
then update simple as room query
@Update
void updateUser(User user);
For example:
//here you get whole object and update whichever field you want. In this firstname and email
User userObject = getUser(String email);
userObject.setFirstName("name")
userObject.setEmail("abc@gkj.com")
//now update query
updateUser(User user);
This is useful when you want to update more number of field