public static SqlMod updateSql(Model model) {
		List<Object> params = new ArrayList<Object>();
		String tableName = tableName(model);
		List<Field> fields = fields(model);
		List<String> _fields = new ArrayList<String>();
		Serializable idVal = 0;
		String idName = null;
		for (Field f : fields) {
			Id id = f.getAnnotation(Id.class);
			if (id != null) {
				f.setAccessible(true);
				try {
					idVal = (Serializable) f.get(model);
				} catch (IllegalArgumentException | IllegalAccessException e) {
					e.printStackTrace();
				}
				Column column = f.getAnnotation(Column.class);
				if (column != null) {
					idName = column.name();
				} else {
					idName = defaultName(f.getName());
				}
				continue;
			}
			Column column = f.getAnnotation(Column.class);
			if (column != null) {
				_fields.add(column.name());
			} else {
				_fields.add(defaultName(f.getName()));
			}
			f.setAccessible(true);
			Object val = null;
			try {
				val = f.get(model);
			} catch (IllegalArgumentException | IllegalAccessException e) {
				e.printStackTrace();
			}
			params.add(val);
		}

		StringBuilder values = new StringBuilder();
		for (int i = 0; i < _fields.size(); i++) {
			if (i != _fields.size() - 1) {
				values.append(_fields.get(i) + "= ?, ");
			} else {
				values.append(_fields.get(i) + "= ?");
			}
		}

		SqlMod mod = new SqlMod();
		mod.setSql(String.format("UPDATE %s SET %s WHERE %s = %s", tableName,
				values.toString(), idName, idVal.toString()));
		mod.setParams(params);

		return mod;
	}