Orm是對象與數據的映射,簡單說就是讓javabean和數據庫表建立綁定關係。
OrmLite是對android原生SQLite的封裝,OrmLiteDemo是Orm快速實現的示例工程。歡迎關注微信公衆號
微信公衆號名稱:Android乾貨程序員
開始在build.gradle添加依賴
compile 'com.j256.ormlite:ormlite-android:5.0'
需要的權限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
第一步:建立Orm關係。以User.class爲例,對應數據庫的t_user表。
@DatabaseField(id = true)
private int id;
@DatabaseField(columnName = "name")
private String name;
@DatabaseField(columnName = "balance")
private float balance;
@DatabaseField(columnName = "discount")
private int discount;
@DatabaseField(columnName = "integral")
private int integral;
@DatabaseField(columnName = "phone")
private String phone;
注意事項:
1.必須要添加無參構造方法;
2.id=true時id可以由我們自己賦值,如果使用generateId=true,則id由數據庫自己維護,自動增長效果,auto increment。
第二步:創建OpenHelper繼承OrmLiteOpenHelper,OrmLiteOpenHelper是SQLiteOpenHelper的子類。
- 在初始化數據庫的oncreate中創建數據庫。由於做了Orm,則指定User.class就可以創建t_user表。
TableUtils.createTable(connectionSource, User.class);
第三步:由於OrmLite封裝了SQLite,所以不用再拼裝SQL語句字段了,直接獲取DAO層插入User對象即可。
1.先獲取數據庫連接:
AndroidDatabaseConnection connection = new AndroidDatabaseConnection(takeoutOpenHelper.getWritableDatabase(), true);
2.開啓事務:
SavePoint savepoint = connection.setSavePoint("start"); //事務的保存點
connection.setAutoCommit(false); //事務處理需要手動提交
3.獲取DAO層:
Dao<User,Integer> userDao = takeoutOpenHelper.getDao(User.class);
4.執行增刪改插。插入前要判斷是否已經有該用戶,做防重複處理,所以有兩個步驟。
User oldUser = userDao.queryForId(001);
if(oldUser!=null){
userDao.update(user);
TecentTjSdk.submitUserInfo(false); //老用戶登錄
Log.e("login","老用戶登錄");
}else{
userDao.create(user);
TecentTjSdk.submitUserInfo(true); //新用戶登錄
Log.e("login","新用戶登錄");
}
5.提交事務。connection.commit(savepoint);
6.如果出現異常,回滾事務即可。connection.rollback(savepoint);
- 最後說明:可以使用userDao.createIfNotExists(user);代替上面兩個步驟,這樣就可以不用開啓事務了,因爲這個API本身封裝了事務,
而手動事務可以更靈活,比如步驟內部增加新的邏輯(代碼統計,其他業務邏輯等等,如上方註釋)。