Fork me on GitHub

Getting started with Sugar ORM

Gradle:

compile 'com.github.satyan:sugar:1.4'

It requires minimal configuration.

All you need to do is, specify SugarApp as your application class in AndroidManifest.xml. You do that by changing the android:name attribute of the application tag.

AndroidManifest.xml
<application android:label="@string/app_name" android:icon="@drawable/icon"
android:name="com.orm.SugarApp">
.
.
<meta-data android:name="DATABASE" android:value="sugar_example.db" />
<meta-data android:name="VERSION" android:value="2" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />
.
.
</application>

The meta-data tags are all optional and serve the following purpose:

Metadata Description
DATABASE Name of the generated sqlite database file. eg: app_name.db
VERSION Version of your database schema.
QUERY_LOG Logs the generated Select queries.
DOMAIN_PACKAGE_NAME Specify a package name where your domain/entity classes are present. This helps in smoother table creation.

Extend SugarRecord for all the classes that you need persisted. That's it. Sugar takes care of table creation for you.

Note: Please retain the default constructor.

public class Book extends SugarRecord {
  String title;
  String edition;

  public Book(){
  }

  public Book(String title, String edition){
    this.title = title;
    this.edition = edition;
  }
}

Or you can use annotations@Table, but then you should define a private Long id field

@Table
public class Book {
  private Long id;

  public Book(){
  }

  public Book(String title, String edition){
     this.title = title;
     this.edition = edition;
  }

  public Long getId() {
      return id;
  }
}

Performing CRUD operations are very simple. Functions like save(), delete() and findById(..) are provided to make the work easy.

Note: Record indexes start at index 1.

Save Entity:
Book book = new Book("Title here", "2nd edition")
book.save();
Load Entity:
Book book = Book.findById(Book.class, 1);
Update Entity:
Book book = Book.findById(Book.class, 1);
book.title = "updated title here"; // modify the values
book.edition = "3rd edition";
book.save(); // updates the previous entry with new values.
Delete Entity:
Book book = Book.findById(Book.class, 1);
book.delete();
Bulk Operations:
List<Book> books = Book.listAll(Book.class);

Book.deleteAll(Book.class);