Active Android
Bài đăng này đã không được cập nhật trong 7 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
Bình luận
Bài viết hay quá, nhưng mình không hiểu gì cả (hihi).
Thần đồng tin học trẻ mà không hiểu thì ai hiểu cho được nhỉ?
(tat)
Hôm nào bày mình code Android với nhé.