編輯:關於Android編程
用過ActiveAndroid、玩過ORMLite,穿過千山萬水,最終還是發現greenDAO好用,如果小伙伴們有興趣可以去查看,ActiveAndroid目前存在的問題是沒有更新了,GitHub上ActiveAndroid的更新都是兩年前的事了。所以我們還是來看看這個目前非常活躍的數據庫框架greenDAO,greenDAO在升級到3.0之後使用方式也變得更加簡單了,上手更加容易了。OK,我們今天就來看看吧。
用過3.0之前的greenDAO的小伙伴們應該都知道在引入greenDAO的時候是非常麻煩,但是在3.0之後這個引入過程簡化了很多,參考官網給出的指導,我們來看看如何引入greenDAO:
首先在project的gradle文件中引入greenDAO插件,引入之後如下:
dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' android { ... ... greendao{ schemaVersion 1 targetGenDir 'src/main/java' } } dependencies { ... ... compile 'org.greenrobot:greendao:3.1.0' }
數據庫引入成功後,在使用之前,我們還得先來創建一個實體類:
@Entity public class User { @Id private Long id; @Property(nameInDb = "USERNAME") private String username; @Property(nameInDb = "NICKNAME") private String nickname; }
OK,這一步做完之後,我們就可以進行數據庫的初始化了,如下:
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "lenve.db", null); DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb()); DaoSession daoSession = daoMaster.newSession();
首先獲取一個DevOpenHelper對象,這個類有點類似於我們使用的SqliteOpenHelper,我們主要在這個類中對數據庫的版本進行管理。這個我們到後面的數據庫升級一節再說。這樣之後,我們對數據庫基本的初始化操作就完成了,玩過Hibernate的小伙伴都知道,在Hibernate框架中如果我們想要操作實體類要通過DAO來操作,那麼在這裡也一樣。想要操作User實體類,得先有一個UserDao,這個UserDao要怎麼獲取呢?如下:
userDao = daoSession.getUserDao();
數據庫的增刪改查我們都將通過UserDao來進行,插入操作如下:
User user = new User(null, "zhangsan" + random.nextInt(9999),"張三"); userDao.insert(user);
刪除數據和修改數據的思路一樣,都是要先查找到數據:
ListuserList = (List ) userDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list(); for (User user : userList) { userDao.delete(user); }
User user = userDao.queryBuilder().where(UserDao.Properties.Id.eq(16)).build().unique(); if (user == null) { Toast.makeText(MainActivity.this, "用戶不存在", Toast.LENGTH_SHORT).show(); }else{ userDao.deleteByKey(user.getId()); }
userDao.deleteAll();
修改數據也是先查詢,再修改:
User user = userDao.queryBuilder() .where(UserDao.Properties.Id.ge(10), UserDao.Properties.Username.like("%90%")).build().unique(); if (user == null) { Toast.makeText(MainActivity.this, "用戶不存在!", Toast.LENGTH_SHORT).show(); }else{ user.setUsername("王五"); userDao.update(user); }
Listlist = userDao.queryBuilder() .where(UserDao.Properties.Id.between(2, 13)).limit(5).build().list(); for (int i = 0; i < list.size(); i++) { Log.d("google_lenve", "search: " + list.get(i).toString()); }
數據庫的升級其實就兩個步驟我們來看看:
首先在module的gradle文件中修改版本號:
//這裡改為最新的版本號 schemaVersion 2 targetGenDir 'src/main/java' }
@Entity public class User { @Property private int age; @Property private String password; @Id private Long id; @Property(nameInDb = "USERNAME") private String username; @Property(nameInDb = "NICKNAME") private String nickname; }
一般的數據庫升級這樣就可以了,特殊情況可能需要自己編寫數據庫遷移腳本,這種時候可以自定義DBHelper,定義方式如下,注意繼承類:
public class DBHelper extends DaoMaster.OpenHelper { public static final String DBNAME = "lenve.db"; public DBHelper(Context context) { super(context, DBNAME, null); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { super.onUpgrade(db, oldVersion, newVersion); } }
DBHelper devOpenHelper = new DBHelper(this); DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb()); DaoSession daoSession = daoMaster.newSession(); userDao = daoSession.getUserDao();
以上。
Retrofit提供了5種內置的注解:GET、POST、PUT、DELETE和HEAD,在注解中指定的資源的相對URLurl與參數小總結@GET("users/
ActionBar是3.0後的UI設計規范,同時也是Google極力推薦使用的設計風格,如何快速設計一個入眼的ActionBar呢,更進一步,給我們搭好一個入眼的Acti
Android應用開發中我們常常需要發送手機短信。這對於android平台來說,是最簡單不過的功能了,無需太多代碼,也無需自定義代碼,只需要調用android提供的消息管
指紋識別是什麼?提到指紋識別我們就要先弄清楚什麼事指紋,指紋為何能夠做到區別性。指紋,由於其具有終身不變性、唯一性和方便性,已幾乎成為生物特征識別的代名詞。指紋是指人的手