Active Android
Bài đăng này đã không được cập nhật trong 6 năm
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