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 { ...
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