在Java中,您可以执行以下操作:
new Object[] { /* parameters separated by comma */};
实际上,这是在Spring框架的预准备语句中使用的。 例如:
getJdbcTemplate().queryForList(
"DELETE FROM foo WHERE id = ?", //the "?" mark will be substituted by "3"
new Object[] { 3 }, //What kind of magic is this?
String.class //Irrelevant in this example
);
答案 0 :(得分:13)
Object[] objs = new Object[]{3,4};
与:
相同Object[] objs = new Object[2];
objs[0] = 3;
objs[1] = 4;
所以你以objs [0]的形式访问它;
答案 1 :(得分:4)
它用于初始化Object
的数组,其值3
的索引为0
。
答案 2 :(得分:3)
你问过这个问题:
new Object[] { 3 }
正如其他答案所说,它正在创建和初始化一个对象数组,这些对象将作为参数传递给queryForList
方法。
数组的实际类型为Object[]
,其长度为1
,其第一个元素为Integer
对象...通过自动装箱int
生成价值3
。
其余的问题对我来说没有多大意义:
- 这怎么称呼?
它被称为“创建和初始化数组”
- 那里发生了什么?
正在创建和初始化数组
- 你怎么能访问这些参数?
嗯......如示例所示?按价值?通过索引数组?目前尚不清楚你在问什么。
答案 3 :(得分:1)
new Object[] { /* parameters separated by comma */};
创建Object
用逗号分隔的参数是数组的元素。
元素数量是数组的length
答案 4 :(得分:1)
此代码可能会转换为以下
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:
}
}
}
}
这对于接受动态数据类型很有用,比如整数,字符串等。并单独处理它们,例如:在Oracle数据库/提供程序的情况下,在日期中添加to_date()。
它被定义为接受多个参数的对象数组,因此,查询可以按照您想要的方式构建。
这一具体路线:
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正在做同样的事情
这怎么称呼?
这称为创建和初始化数组的简写。因为您不需要声明一个变量来访问该特定时刻的对象数组。
那里发生了什么?
在答案中解释!
你怎么能访问这些参数?
在答案中解释!
答案 5 :(得分:0)
创建Object的匿名数组。
new Object[] { /* parameters separated by comma */};
在索引0处初始化值为3的数组
new Object[] { 3 }
最后一个例子与:
相同Object[] obj = new Object[1];
objs[0] = 3;
答案 6 :(得分:0)
代码新的Object [] {/ *参数用逗号分隔* /};
例如
new String[] {"a","b", "c"}
创建3个String类型的对象。
答案 7 :(得分:0)
new Object[]
表示它是Object
类型的数组。 new Object[]{3}
是为这个数组分配一个Integer 3的简写。
答案 8 :(得分:0)
这个场景主要是在使用 DAO 示例或数据库相关应用程序时出现的 例子:- ========
public Emp getEmpById(int id){
String sql="select * from Emp99 where id=?";
return template.queryForObject(sql, new Object[]{id},new
BeanPropertyRowMapper<Emp>(Emp.class));
在上面的示例查询中,参考动态用户请求ID号来获取员工数据,所有员工都认为是列表,ID号分别对请求的数据进行动态响应