Github最火開源項目-ormlite數據庫使用

  • 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本身封裝了事務,
    而手動事務可以更靈活,比如步驟內部增加新的邏輯(代碼統計,其他業務邏輯等等,如上方註釋)。
發佈了76 篇原創文章 · 獲贊 63 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章