Android: SQLite Database Với OrmLite
Bài đăng này đã không được cập nhật trong 3 năm
Giới thiệu
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ì:
- Nó được sử dụng cho các hoạt động cơ sở dữ liệu phức tạp
- Nhà phát triển không phải nhớ các truy vấn SQL.
- · Nó cũng thích các ứng dụng cỡ lớn.
Cách sử dụng trong android
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
All rights reserved