您不需要在您保存/加载到/从 Backendless 的对象中扩展任何专门的 Backendless 类。在类中,您可以使用公共字段或 getter/setter 属性。您不需要使用任何注释。事情要简单得多。如果您有一个引用类 B 的类 A(通过字段或 javabean 属性),那么在后端,我们会将 A 存储在名为“A”的表中,将 B 存储在名为“B”的表中。我们还将在后端的两条记录之间创建关系。
有两种方法可以处理 Backendless 显示的内容:
使用首选项保存用户对象:
BackendlessUser user = Backendless.UserService.CurrentUser();
user.setProperty( "audioStatus", true );
user.setProperty( "backgroundImageUrl", url-to-background-jpg );
Backendless.UserService.save( user, asyncCallback );
这将导致在用户表中创建两列:“audioStatus”和“backgroundFile”。但是,如果您想要一个单独的表来存放所有首选项,您可以这样做:
public class UserPreferences
{
// or use Java bean getter/setter instead of fields
public String backgroundImageUrl;
public boolean audioStatus;
}
UserPreferences prefs = new UserPreferences();
prefs.backgroundImageUrl = url-to-background-jpg;
prefs.audioStatus = true;
BackendlessUser user = Backendless.UserService.CurrentUser();
user.setProperty( "userPrefs", prefs );
Backendless.UserService.save( user, asyncCallback );
这将导致在后端创建一个辅助表。该表将被称为“UserPreferences”——就像类名一样。Backendless 还将在用户对象和 UserPreferences 表中的特定记录之间创建关系。
检索用户属性
如果用户属性不是通过关系存储的(参见上面的第一个示例),那么它们会在用户登录时立即加载。然后您可以使用 getProperty 方法获取属性:
Backendless.UserService.login( userName, password, new AsyncCallback<BackendlessUser>()
{
@Override
public void handleResponse( BackendlessUser user )
{
boolean audioStatus = (boolean) user.getProperty( "audioStatus" );
String fileUrl = (String) user.getProperty( "backgroundImageUrl" );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
}
});
如果首选项存储在相关表中,那么您有几个选项可以加载它们:
BackendlessUser user = Backendless.UserService.CurrentUser();
ArrayList<String> relations = new ArrayList<String>();
relations.add( "userPrefs" ); // name of the relation column in Users
Backendless.Data.of( BackendlessUser.class ).loadRelations( user, relations, new AsyncCallback<BackendlessUser>()
{
@Override
public void handleResponse( BackendlessUser user )
{
// user - object with loaded relations.
// now you can do this:
UserPreferences prefs = (UserPreferences)user.getProperty( "userPrefs" );
}
@Override
public void handleFault( BackendlessFault backendlessFault )
{
}
});
希望这可以帮助!