public static void update(MySQLObjectMapping updateObj) throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException, SQLException {
        Class clazz = updateObj.getClass();
        
        List<Field> ids = updateObj.getIdFields();
        
        StringBuilder whereConditionBuilder = new StringBuilder(" WHERE ");
        
        StringBuilder queryBuilder = new StringBuilder(" UPDATE ");
        queryBuilder.append(clazz.getSimpleName().toLowerCase());
        queryBuilder.append(" SET");
        Field[] fields = clazz.getDeclaredFields();
        Field[] publicFields = clazz.getFields();
        for (int i = 0; i < publicFields.length; i++) {
            if (!ids.contains(fields[i])) {
                String fieldname = upperCaseFirstCharacterAndID(fields[i].getName());

                queryBuilder.append(" ");
                queryBuilder.append(fieldname);
                queryBuilder.append("=");

                Object fieldValue = fields[i].get(updateObj);
                if (fields[i].getType().equals(Date.class)) {
                    queryBuilder.append("'");
                    queryBuilder.append(((Date) fieldValue).toString());
                    queryBuilder.append("'");
                } else if (fields[i].getType().equals(Boolean.class)) {
                    queryBuilder.append((Boolean) fieldValue);
                } else if (fields[i].getType().equals(Integer.class)){
                    queryBuilder.append((Integer) fieldValue);
                } else {
                    queryBuilder.append("'");
                    queryBuilder.append((String) fieldValue);
                    queryBuilder.append("'");
                }
                if(i < (publicFields.length-1))
                    queryBuilder.append(",");
            } else {
                whereConditionBuilder.append(" ");
                whereConditionBuilder.append(upperCaseFirstCharacterAndID(fields[i].getName()));
                whereConditionBuilder.append("=");
                
                Object fieldValue = fields[i].get(updateObj);
                if (fields[i].getType().equals(Date.class)) {
                    whereConditionBuilder.append("'");
                    whereConditionBuilder.append(((Date) fieldValue).toString());
                    whereConditionBuilder.append("'");
                } else if (fields[i].getType().equals(Boolean.class)) {
                    whereConditionBuilder.append((Boolean) fieldValue);
                } else if (fields[i].getType().equals(Integer.class)){
                    whereConditionBuilder.append((Integer) fieldValue);
                } else {
                    whereConditionBuilder.append("'");
                    whereConditionBuilder.append((String) fieldValue);
                    whereConditionBuilder.append("'");
                }
            }
            
        }

        executeUpdate(queryBuilder.toString() + whereConditionBuilder.toString());
    }