-
Notifications
You must be signed in to change notification settings - Fork 1k
Querying the database
pardom edited this page Nov 17, 2012
·
4 revisions
All queries in ActiveAndroid use the query builder syntax, or the Model.query() method.
Let's look at some queries by adding to our model. Here's what we have so far:
@Table(name = "Items")
public class Item extends Model {
@Column(name = "Name")
public String name;
@Column(name = "Category")
public Category category;
}
It would be nice if we could get a random item from the database. Let's add a method to do that.
public static Item getRandom() {
return new Select().from(Item.class).orderBy("RANDOM()").executeSingle();
}
Building a query in ActiveAndroid is like building a normal SQL statement. We create a new select object, call from and pass in the Item class. We then call orderBy, passing in "RANDOM". To execute a query we call execute(), or in this case executeSingle().
If we only want to get items from a certain category, we pass in a string for our where class argument. The method would look like this:
public static Item getRandom(Category category) {
return new Select()
.from(Item.class)
.where("Category = ?", category.getId())
.orderBy("RANDOM()")
.executeSingle();
}
And here's how we get all the items in a category, sorted by name.
public static List<Item> getAll(Context context, Category category) {
return new Select()
.from(Item.class)
.where("Category = ?", category.getId())
.orderBy("Name ASC")
.execute();
}
Next: Type serializers