+3

Active Android

Hello mọi người ! Hôm nay mình sẽ giới thiệu đến mọi người về một phương pháp tạo và thao tác với Database trong Android siêu đơn giản - Active Android. Mình nghĩ nó khá là hay ho và cẩn thiết. Đầu tiên :

Installing with Gradle

Modify your build.gradle to include:

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

Cấu hình dự án

Trong thẻ application của AndroidManifest.xml các bạn thêm các thuộc tính sau:

<application
    android:name="com.activeandroid.app.Application"
    ...
     
    <meta-data
        android:name="AA_DB_NAME"
        android:value="friendlist.db" />
    <meta-data
        android:name="AA_DB_VERSION"
        android:value="1" />
    <meta-data
        android:name="AA_MODELS"
        android:value="com.framgia.trungphong.DemoActiveAndroid.Categories,com.framgia.trungphong.DemoActiveAndroid.Items" />
    ...
</application>

Trong này các bạn chú ý:

  • AA_DB_NAME là từ khóa nhận biết tên database (demo.db)
  • AA_DB_VERSION là từ khóa nhận biết phiên bản database.
  • AA_MODELS là từ khóa nhận biết các bảng trong database. Các bảng này chính là các class của chúng ta (có kèm package)

Note

  • Cũng lưu ý rằng "application name" chỉ tới "ActiveAndroid application class". Bước này là bắt buộc để ActiveAndroid hoạt động.

  • Nếu bạn đang sử dụng một lớp custom của Aplication, chỉ việc kế thừa "com.activeandroid.app.Application" thay cho việc kế thừa "android.app.Application"

public class MyApplication extends com.activeandroid.app.Application { ...
  • Nếu không bạn cần phải chú ý tới "ActiveAndroid.initialize(this);"
public class MyApplication extends SomeLibraryApplication {
	@Override
	public void onCreate() {
		super.onCreate();
		ActiveAndroid.initialize(this);
	}
}
  • Nếu bạn muốn xây dựng cơ sở dữ liệu một cách năng động.Bạn có thể sử dụng lớp cấu hình.
public class MyApplication extends SomeLibraryApplication {
	@Override
	public void onCreate() {
		super.onCreate();
        Configuration dbConfiguration = new Configuration.Builder(this).setDatabaseName("xxx.db").create();
		ActiveAndroid.initialize(dbConfiguration);
	}
}

Ví dụ

Minh sẽ tạo hai model, tương đương với việc CSDL của chúng ta sẽ có 2 bảng : Category và Item.

packagecom.framgia.trungphong.DemoActiveAndroid;
 
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;

@Table(name = "Categories")
public class Category extends Model { 
	@Column(name = "Name")
	public String name;
}
packagecom.framgia.trungphong.DemoActiveAndroid;
 
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;

@Table(name = "Items")
public class Item extends Model {
	@Column(name = "Name")
	public String name;
 
	@Column(name = "Category")
	public Category category;
}

Query

  • Get random một đối tượng trong một bảng
public static Item getRandom() {
	return new Select().from(Item.class).orderBy("RANDOM()").executeSingle();
}

Hoặc

public static Item getRandom(Category category) {
	return new Select()
		.from(Item.class)
		.where("Category = ?", category.getId())
		.orderBy("RANDOM()")
		.executeSingle();
}
  • Get một danh sách
public static List<Item> getAll(Category category) {
	return new Select()
		.from(Item.class)
		.where("Category = ?", category.getId())
		.orderBy("Name ASC")
		.execute();
}

Hoặc

List<Item> list = new Select().from(Item.class).execute();
  • Để lưu lại hoặc insert 1 bản ghi (1 object) chúng ta chỉ cần gọi phương thức save()
  • Để lấy ra một danh sách các bản ghi chúng ta dùng new Select().from(Friend.class).execute()
  • Để xóa một bản ghi ta dùng phương thức delete.
new Delete().from(Item.class).where("Id = ?", 1).execute();

Hoặc

Item.delete(Item.class, 1);

Hoặc

Item item = Item.load(Item.class, 1);
item.delete();

Tham khảo : Github


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.