12/08/2018, 16:41

Android: SQLite Database Với OrmLite

Xin chào các bạn ! Hôm nay, mình xin giới thiệu với các bạn 1 ORM Lib rành cho việc thao tác với Database trong android. Đó là OrmLite Vậy OrmLite là gì? Nó là viết tắt của Object Relational Mapping Lite cung cấp một số chức năng để làm việc với các đối tượng Java tới cơ sở dữ liệu SQL. Nó tránh ...

Xin chào các bạn ! Hôm nay, mình xin giới thiệu với các bạn 1 ORM Lib rành cho việc thao tác với Database trong android. Đó là OrmLite Vậy OrmLite là gì? Nó là viết tắt của Object Relational Mapping Lite cung cấp một số chức năng để làm việc với các đối tượng Java tới cơ sở dữ liệu SQL. Nó tránh được sự phức tạp và thao tác chuẩn hơn, đơn giản hơn cho các lập trình viên. Dưới đây là sơ đồ hoạt động của OrmLite Vậy tại sao lại phải sử dụng OrmLite mà không phải các thư viện khác hay viết các câu truy vấn đơn thuần? Bởi vì:

  1. Nó được sử dụng cho các hoạt động cơ sở dữ liệu phức tạp
  2. Nhà phát triển không phải nhớ các truy vấn SQL.
  3. · Nó cũng thích các ứng dụng cỡ lớn.

1.Đầu tiên, bạn cần phải thêm thư viện vào trong Android như bao thư viện khác

dependencies {

...

// Dependency for OrmLite
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'com.j256.ormlite:ormlite-core:4.48'

}

2. Cấu hình 1 Table cho 1 Database

@DatabaseTable (tableName = "students") 
public class Student { 

   // Fields 

   // Primary key được định nghĩa là một số tự động được tạo ra 
   // Nếu tên cột của bảng cơ sở dữ liệu khác với tên biến lớp Model, cách để sử dụng mapName 
  
   @ DatabaseField (columnName = "id", generateId = true) 
   private int id; 

   @DatabaseField (columnName = "first_name") 
   private String firstName; 

   @DatabaseField (columnName = "last_name") 
   private String lastName; 

   @DatabaseField (columnName = "địa chỉ") 
   Địa chỉ String cá nhân; 

   @DatabaseField (columnName = "mobile_number") 
   private Chuỗi mobileNumber;


   / / Phương thức Getter và Setter của các trường 
}

Như ta thấy , từ có @ đằng trước chính là từ khóa của OrmLite.

  • @DatabaseTable : khởi tạo 1 bảng có tên là student
  • @DatabaseField (columnName = "first_name") : khởi tạo 1 cột có tên là first_name Bạn có thể tham khảo thêm 1 số các Anotation của thư viện tại:http://ormlite.com/javadoc/ormlite-android/

3. Tạo SQLite DBHandle class để xử lý

public class DBHelper extends OrmLiteSqliteOpenHelper {

   // Fields

   public static final String DB_NAME = "student_manager.db";
   private static final int DB_VERSION = 1;

   // Public methods

   public DBHelper(Context context) {
       super(context, DB_NAME, null, DB_VERSION);
       getWritableDatabase();
   }

   @Override
   public void onCreate(SQLiteDatabase db, ConnectionSource cs) {
       try {

       Create Table with given table name with columnName
       TableUtils.createTable(cs, Student.class);

       } catch (SQLException e) {
           throw new RuntimeException(e);
       }
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, ConnectionSource cs, int oldVersion, int newVersion) {

   }
}

4.Tạo 1 class base để tiến hành xử lý việc CRUD

public  List getAll(Class clazz) throws SQLException {
   Dao<T, ?> dao = getDao(clazz);
   return dao.queryForAll();
}

public  T getById(Class clazz, Object aId) throws SQLException {
   Dao<T, Object> dao = getDao(clazz);
   return dao.queryForId(aId);
}

public  CreateOrUpdateStatus createOrUpdate(T obj) throws SQLException {
   Dao<T, ?> dao = (Dao<T, ?>) getDao(obj.getClass());
   return dao.createOrUpdate(obj);
}

public  int deleteById(Class clazz, Object aId) throws SQLException {
   Dao<T, Object> dao = getDao(clazz);
   return dao.deleteById(aId);
}

5. Thêm 1 đối tượng

DBHelper  dbHelper = new DBHelper(this);

public void addStudent() {

   Student student = new Student();

   student.setFirstName("XYZ");
   student.setLastName("ABC");
   student.setMobileNumber("1234567895");
   student.setAddress("USA");


   try {
       dbHelper.createOrUpdate(student);
   } catch (SQLException e) {
       e.printStackTrace();
   }
}

Reading All Student Record

public List getAllStudent() {

   List mStudentList = new ArrayList<>();
   try {
       mStudentList.addAll(dbHelper.getAll(Student.class));
   } catch (SQLException e) {
       e.printStackTrace();
   }
   return mStudentList;
}

6. Sửa 1 đối tượng

public void updateStudent(Student student) {

try {
   dbHelper.createOrUpdate(student);
} catch (SQLException e) {
   e.printStackTrace();
}
}

7. Xóa 1 đối tượng

public void deleteRecord(Student student) {
   try {
       dbHelper.deleteById(Student.class, student);
   } catch (SQLException e) {
       e.printStackTrace();
   }
}

Bên trên mình đã giới thiệu qua cho các bạn về 1 thư viện khá hay , hy vọng sẽ giúp đỡ các bạn trong quá trình là việc với Database trong android. Bài viết được tham khảo từ : http://ormlite.com/javadoc/ormlite-android/ https://www.spaceotechnologies.com/android-tutorial-sqlite-database-with-ormlite/ các bạn có thế tham khảo code tại: https://github.com/bfil/android-ormlite-sample

0