Looking for best practices to build an update query with not null values.
Below the my implementation where passed parameter firstName, middleName, lastName, address can be null. I want to build an update query with not null values only. I have used multiple if condition for not null and comma separator.
public void updatePerson(String id, String firstName, String middleName, String lastName, String address) {
StringBuilder query = new StringBuilder("UPDATE PERSON SET ");
MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource();
mapSqlParameterSource.addValue("id", id);
boolean columnSepartor = false;
if (firstName != null) {
query.append(" FIRST_NAME =:firstName");
mapSqlParameterSource.addValue("firstName", firstName);
columnSepartor = true;
}
if (middleName != null) {
query = columnSepartor ? query.append(", MIDDLE_NAME =:middleName") : query.append(" MIDDLE_NAME =:middleName");
mapSqlParameterSource.addValue("middleName", middleName);
columnSepartor = true;
}
if (lastName != null) {
query = columnSepartor ? query.append(", LAST_NAME =:lastName") : query.append(" LAST_NAME =:lastName");
mapSqlParameterSource.addValue("lastName", lastName);
columnSepartor = true;
}
if (address != null) {
query = columnSepartor ? query.append(", ADDRESS =:address") : query.append(" ADDRESS =:address");
mapSqlParameterSource.addValue("address", address);
}
query.append(" WHERE ID =:id");
namedParameterJdbcTemplate.update(query.toString(), mapSqlParameterSource);
}
Please suggest best practices to target such use case. Thanks in advance.