Этот код может быть возможно перевести как следующий
private void queryforlist(string SQL, object[] parameters, Class c)
{
//parameters is an array of objects used to replace the ? caracteres in the sql
//text.
if (parameters != null)
{
//we can access parameters by index inside the method
for(int i=0; parameters.length; i++)
{
if (parameters[i] instanceof String)
{
//adding quotes to string for example
String param = "\""+parameters[i]+"\"";
} else if (parameters[i] instanceof Integer)
{
//Note is Integer not int because of AutoBoxing:
}
}
}
}
Это полезно принимать динамические типы данных, такие как целые числа, строки и т.д. И дело это их по отдельности, например: Добавление TO_DATE() в день в случай базы данных Oracle/поставщика.
Он определяется как массив объектов для принятия нескольких параметров, поэтому запрос может быть построен так, как вы хотите.
Эта специфическая линия:
new Object[] { 3 }
можно перевести как:
Object[] AnonymousArrayObject = new Object[1];
AnonymousArrayObject [0] = 3;
Поскольку queryForList принимает массив объекта в качестве параметра, существует несколько способов вызова этого метода:
Пример 1
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?",
new Object[] { 3 },
String.class
);
Пример 2
Object[] Parameters = new Object[1];
parameters[0] = 3;
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?",
Parameters,
String.class
);
Пример 3
Object[] Parameters = new Object[] { 3 };
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?",
Parameters,
String.class
);
Пример 1,2 и 3 делает то же самое
Пример 4
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?",
null,
String.class
);
Пример 5
Object[] Parameters = null;
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?",
Parameters,
String.class
);
Пример 4 и 5 делают то же самое
Как это называется?
Это называется Short-hand для создания и инициализации массива. Поскольку вам не нужно объявлять переменную для доступа к массиву объекта в этот конкретный момент.
Что там происходит?
Объясняется в ответе!
Как вы можете получить доступ к этим параметрам?
Объясняется в ответе!
AutoBoxing
Вы инициализируете массив в фигурных скобках ('{}'). В этом случае с 'Integer' 3. – Danny