標籤:android
一.GreenDao概述:
greenDAO 是一個可以協助 Android 開發人員快速將 Java 對象映射到 SQLite 資料庫表單中的 ORM 解決方案。greenDAO的特點運行效率最高、記憶體消耗最少,官網:http://greendao-orm.com/。。。github:https://github.com/greenrobot/greenDAO。
1、 DaoCore:greenDAO的核心庫。
2、 DaoExample:greenDAO使用範例項目。
3、 DaoExampleGenerator:greenDAO使用範例的實體類及DAO組件的產生器項目。
4、 DaoGenerator:greenDAO的DAO組件產生器項目。
5、 DaoTest:greenDAO的測試專案。
6、 PerformanceTestOrmLite:ormlite架構效能測試項目
二.產生GreenDao架構:
在使用之前要下載greendao-generator.jar和freemarker.jar兩個包,freemarker需要這個來產生java檔案,來看具體怎麼使用:
(1).首先產生一個java項目(不是android項目),然後將上面greendao-generator.jar和freemarker.jar匯入java項目。
產生一個類,名字隨便取:我得命名DaoGeneratorTest:
<span style="font-size:18px;">public class DaoGeneratorTest {public static void main(String[] args) throws Exception { //第一個參數是資料庫版本號碼,第二個是自動產生包的路徑 Schema schema = new Schema(1, "de.greenrobot.daoexample"); addNote(schema); //產生路徑,就是在什麼目錄下產生這個檔案,我的路徑是在一個建立android項目src-gen目錄下 new DaoGenerator().generateAll(schema, "../AndroidTestGreenDao/src-gen"); } private static void addNote(Schema schema) { //Entity是一個實體,實體類名為Note Entity note = schema.addEntity("Note"); //主鍵,設定自增長可在後面家.autoincrement() note.addIdProperty(); //實體類中的屬性(也就是表中的欄位),不可為空,其他設定看下方法名就能知道什麼意思了 note.addStringProperty("text").notNull(); note.addStringProperty("comment"); note.addDateProperty("date"); } }</span>
而且要注意:src-gen要先建立好,才能成功。
產生成功:
Schema類:可以看成一個存放實體的容器。
Entity類:可用於將實體類映射到對應的表。
DaoGenerator:實體類和DAO組件的產生器,generateAll根據schema和目錄參數,首先組建檔案存放目錄,並從schema中取出所有entity,根據freemaker模板產生對應的實體了和DAO組件。
三.使用GreenDao架構:
建立一個android項目,我得android項目名為(我上面java指定的路徑就是這個項目下):AndroidTestGreenDao
這裡greendao-1.3.0-beta-1.jar在github下載的DaoExample目錄下libs下拿出來的。
建立資料庫:
public class MainActivity extends Activity {private SQLiteDatabase db;private DaoMaster master;private DaoSession session;private NoteDao noteDao;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); //建立資料庫名為notes-dbDevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db",null);db = helper.getWritableDatabase();master = new DaoMaster(db);session = master.newSession();noteDao = session.getNoteDao(); //添加一條資料Note note = new Note(10L, "1", "1", new Date());noteDao.insert(note);}}
Note:實體物件,映射到表NOTE。
NoteDAO:通過代碼可知此類提供了產生建表、和刪表的方法,並類繼承了AbstractDao(greenDAO核心類之一,封裝了動作表中資料的各種方法)。
DaoMaster:繼承自AbstractDaoMaster,用於建立資料庫,並管理資料庫串連。
DaoSession:繼承自AbstractDaoSession,所有DAO對象的入口,通過此類可獲得實體了的DAO組件。
android GreenDao資料庫架構學習(1)