Java Amazon Simple Db从列表中获取项目
在下面的代码中,我查询SimpleDb以获得域中的项目列表以及“Favorited”属性。基本上,我正在尝试更新用户数据库,以获得每个项目被“青睐”的最新次数 itemNames[]工作得非常好。但是,我在提取属性时遇到问题。我开始设置列表属性,结果是[{Name:Favorited,AlternateNameEncoding:null,Value:5,AlternateValueEncoding:null,}]。但是,从这里开始,我不知道如何提取Value属性 最终结果我希望favoritedValues[I]=5 还有,我可能会以一种困难的方式来做这件事,有没有更简单的方法呢Java Amazon Simple Db从列表中获取项目,java,amazon-web-services,amazon,amazon-simpledb,Java,Amazon Web Services,Amazon,Amazon Simpledb,在下面的代码中,我查询SimpleDb以获得域中的项目列表以及“Favorited”属性。基本上,我正在尝试更新用户数据库,以获得每个项目被“青睐”的最新次数 itemNames[]工作得非常好。但是,我在提取属性时遇到问题。我开始设置列表属性,结果是[{Name:Favorited,AlternateNameEncoding:null,Value:5,AlternateValueEncoding:null,}]。但是,从这里开始,我不知道如何提取Value属性 最终结果我希望favorited
private void updateFavorites() {
AmazonClientManager clientManager = new AmazonClientManager();
AmazonSimpleDBClient aSDbClient = clientManager.sdb();
String domainName = "domain";
SelectRequest selectRequest2 = new SelectRequest( "select Favorited from `" + domainName + "`" ).withConsistentRead( true );
List values = aSDbClient.select( selectRequest2 ).getItems();
String[] itemNames = new String[ values.size() ];
String[] favoritedValues = new String[ values.size()];
for ( int i = 0; i < values.size(); i++ ) {
itemNames[ i ] = ((Item)values.get( i )).getName();
List attributes = ((Item)values.get( i )).getAttributes();
favoritedValues[i] = No idea what goes here
}
}
private void updateFavorites(){
AmazonClientManager客户端管理器=新建AmazonClientManager();
AmazonSimpleDBClient aSDbClient=clientManager.sdb();
字符串domainName=“domain”;
SelectRequest selectRequest2=新建SelectRequest(“从“+”域名+”中选择偏好”)。具有一致性读取(true);
List values=aSDbClient.select(selectRequest2.getItems();
String[]itemNames=新字符串[values.size()];
String[]favoritedValues=新字符串[values.size()];
对于(int i=0;i
开发指南没能帮到我。每次我通过谷歌搜索信息时,我都会在ListView上获得我所不需要的信息。你可以循环属性并找到它们的名称和值
List<Item> values;
Item currentItem = buffer.get(i);
itemNames[i] = currentItem.getName();
List<Attribute> currentAttributes = currentItem.getAttributes();
String favorited = "";
for (Attribute anAttribute : currentAttributes) {
if (anAttribute.getName().equals("Favorited")) {
favorited = anAttribute.getValue();
}
}
列表值;
Item currentItem=buffer.get(i);
itemNames[i]=currentItem.getName();
列表,它允许使用如下语法
PersistenceInterface store = new AmazonSdbHelper();
store.setDomain("domain");
store.query("SELECT * FROM domain");
while (store.hasNext()) {
String key = store.next();
String address = store.getAttributeAsString("address");
Collection<String> phones = store.getAttributeAsCollection("phones");
int visits = store.getAttributeAsInt("visits");
}
PersistenceInterface store=new AmazonSdbHelper();
store.setDomain(“域”);
store.query(“从域中选择*);
while(store.hasNext()){
String key=store.next();
字符串地址=store.getAttributeAsString(“地址”);
收集电话=store.getAttributesCollection(“电话”);
int visions=store.getAttributeAsInt(“访问”);
}
更好的是有一个名为JPA的项目,它为Amazon实现了JPA。我想试一试,有没有人有这方面的经验?您的顶级解决方案似乎效率很低……特别是如果您有很多属性,并且您只尝试提取一个属性。这真的是唯一的办法吗?另外,我不熟悉for(Attribute-anaAttribute:currentAttributes)…您能解释一下吗?因为您有一个属性列表,所以必须遍历它才能找到一个。以防万一,当你找到一个循环时,你可以打破它。但这并不是低效的,列表上的循环速度非常快,特别是与SimpleDB的速度相比。这是乏味的,但最好是你写一些方法来为你这样做,就像我做的。至于循环,它是2004年在Java1.5中引入的。我对它进行了测试,你是对的,它不需要很长时间(至少对于一个小数据库来说)。这对我有用,谢谢!