@Override
	public Object execute(Object obj, Object[] args) {
		Method[] getterMethods = definition.getGetterMethods();
		Integer[] parameterIndexes = definition.getParameterIndexes();
		boolean isReturnId = definition.isReturnId();
		// 获取实际用于执行的preparedSQL
		String actualSql = definition.getActualSql(args);
		List<String> parameterNames = definition.getParsedSql().getParameterNames();
		Object[] paramArray = ReflectionUtils.fetchValues(getterMethods, parameterIndexes, args, parameterNames);

		KeyHolder keyHolder = null;
		if (isReturnId) {
			keyHolder = dataAccessor.getKeyHolder();
		}

		LOGGER.info("更新操作执行SQL[" + actualSql + "]");
		int rows = dataAccessor.update(actualSql, keyHolder, paramArray);

		if (keyHolder != null) {
			return keyHolder.getKey();
		} else {
			return rows;
		}
	}