code: public int update(String table, Object record, Condition whereClause) {
          table = formatName(table);
          final ContentValues contentValues = record instanceof ContentValues ? (ContentValues) record
                  : toContentValues(record, readOrWriteOnlyPropNamesMap.get(record.getClass()), columnNamingPolicy, true);
          removeIdDefaultValue(contentValues);
  
          if (whereClause == null) {
              return sqliteDB.update(table, contentValues, null, N.EMPTY_STRING_ARRAY);
          } else {
              final Command cmd = interpretCondition(whereClause);
              return sqliteDB.update(table, contentValues, cmd.getSql(), cmd.getArgs());
          }
      }
docs: Update the records in data store with the properties which have been updated/set in the specified <code>entity</code> by the specified condition.
  if the entity implements <code>DirtyMarker</code> interface, just update the dirty properties.
  To exclude the some properties or default value, invoke {@code com.landawn.abacus.util.N#entity2Map(Object, boolean, Collection, NamingPolicy)}
  
  @param table
  @param record can be <code>Map</code> or <code>entity</code> with getter/setter methods
  @param whereClause Only binary(=, <>, like, IS NULL ...)/between/junction(or, and...) are supported.
  @return
  
  @see com.landawn.abacus.util.Maps#entity2Map(Object, boolean, Collection, NamingPolicy)