日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)...

發布時間:2023/12/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要: Android中對SQLite數據庫使用,是一件非常頻繁的事情。現今,也有非常多的SQLite處理的開源框架,其中最著名的greenDao,它以占用資源少,處理效率高等特點,成為優秀的ORM框架之一。那么對于greenDao 2要如何使用呢?以及使用過程中需要注意哪些事項呢?那么這篇文章一定能夠得到你想要的答案。

人生就是一連串的抉擇,每個人的前途與命運,完全把握在自己手中,只要努力,終會有成。就業也好,擇業也罷,創業亦如此,不要活在別人的嘴里,不要活在別人的眼里,而是把命運握在自己手里。

在了解greenDao之前首要知道什么是SQLite,什么是ORM?
SQLite是一款輕量級嵌入式關系型數據庫,也是移動端最為常用的一種關系型數據庫。
ORM對象關系映射,簡單一點說就是實現數據庫表結構與對象一一對印。

greenDao簡介

官網解釋:greenDAO: Android ORM for your SQLite database。
greenDAO是Android中對SQLite進行對象關系映射的一個框架。

greenDao之所以很流行,跟它的優點是息息相關的:

  • 一個精簡的庫
  • 性能最大化
  • 內存開銷最小化
  • 易于使用的 API
  • 對 Android 進行高度優化

Android中ORM框架有很多,如OrmLite,ActiveAndroid等,但是相對而言,greenDao性能更加優秀。

greenDao-Generator2使用

在使用greenDao之前要生成相應的表,Bean,Dao文件等,這個生成過程可以利用Eclipse/MyEclipse/Android Studio等相關工具來實現。
如果使用Eclipse/MyEclipse實現,需要添加greendao-generator:2.1.0和freemaker兩個jar。
如果使用Android Studio實現,只要在創建的Java Module中添加greendao-generator:2.1.0即可。
下面將以Android Studio為例,實現這一功能。

配置:首先創建一個Android工程,然后添加一個Module(Java Library),最后在Module的build.gradle文件中中添加greendao-generator:2.1.0依賴。

dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')compile 'de.greenrobot:greendao-generator:2.1.0' }

使用:greendao-generator是用來生成相應的表,Bean,Dao文件等。假如要生成一個用戶表,一個朋友表,一個用戶可以有多個朋友,一個朋友數據最多對應一個用戶,那么該如何實現呢?

public class ZGenerator {public static void main(String args[]) { // 創建一個模式Shcema // 參數1-版本,參數2-包名 Schema schema = new Schema(1, "cc.ibooker.daogenerator"); // 添加Entity-相當于表-用戶對象 // 參數-代表生成對象類名 Entity user = schema.addEntity("User"); user.addIdProperty().autoincrement();// 添加ID-自增 user.addLongProperty("uId"); user.addStringProperty("uRealname"); user.addStringProperty("uSex"); user.addStringProperty("uBirthday"); user.addFloatProperty("uHeight"); user.addFloatProperty("uWeight"); user.addStringProperty("uDomicile"); user.addLongProperty("uPhone"); user.addStringProperty("uEmail"); user.addStringProperty("uWeibo"); // 朋友表/對象 Entity friend = schema.addEntity("Friend"); friend.addIdProperty().autoincrement();// 添加ID-自增 friend.addStringProperty("fGname"); // 添加外鍵-只能關聯User主鍵 Property fUid = friend.addLongProperty("fUid").getProperty(); friend.addToOne(user, fUid);// 一對一 user.addToMany(friend, fUid).setName("friends");// 一對多 // 生成相關文件 try { // 參數1-schema,參數2-生成路徑 new DaoGenerator().generateAll(schema, "app/src/main/java"); } catch (Exception e) { e.printStackTrace(); } } }

1、創建Schema(設置模式)

/*** @param version 版本號-可以理解為數據庫版本號* @param defaultJavaPackage 默認包名-即文件生成路徑**/ Schema schema = new Schema(int version, String defaultJavaPackage);

2、添加表對象

/*** @param className 生成Bean文件的類名**/ Entity entity = schema.addEntity(String className); // 添加主鍵-并實現主鍵自增 entity.addIdProperty().autoincrement(); // 添加字段名-根據添加類型進行設置 entity.addStringProperty(String propertyName); entity.addLongProperty(String propertyName);

添加外鍵-只能關聯主鍵

// 添加外鍵-只能關聯User主鍵 Property property = entity.addLongProperty(String propertyName).getProperty();

一對一關聯

/*** @param target 目標表對象(關聯對象)* @param fkProperty 外鍵**/ entity.addToOne(Entity target, Property fkProperty);

一對多關聯

/*** @param target 目標表對象(關聯對象)* @param fkProperty 外鍵**/ ToMany tomany = entity.addToMany(Entity target, Property fkProperty); // 設置外鍵對象名稱 tomany.setName(String name);

3、編譯執行

try {// 參數1-schema,參數2-生成根路徑new DaoGenerator().generateAll(schema, "app/src/main/java"); } catch (Exception e) { e.printStackTrace(); }

greenDao2使用

配置:在build.gradle(app)中加入greendao:2.1.0依賴。

dependencies {compile 'de.greenrobot:greendao:2.1.0' }

使用:greendao:2.1.0主要是用來操作數據庫,而對于數據庫的操作主要是增刪改查。
在實現數據庫增刪改查之前必須對相關Dao文件進行實例化,那么該如何進行實例化呢?

// 獲取一個可讀可寫數據庫對象,參數1-上下文對象,參數2-數據庫名稱,參數3-游標工廠CursorFactory SQLiteDatabase db = new DaoMaster.DevOpenHelper(this, "ibookerdata.db", null).getWritableDatabase(); // 獲取DAO模式 DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); FriendDao friendDao = daoSession.getFriendDao(); UserDao userDao = daoSession.getUserDao();

對Dao對象進行實例化之后,就可以通過相關Dao來操作相關表。
1、插入數據-GreenDao可以實現單一對象插入和批量插入功能。

  • 插入一條數據
// 參數為User對象 long id = userDao.insert(User user);
  • 批量插入數據
// 參數為User對象集 userDao.insertInTx(List<User> users);

2、修改數據-GreenDao可以實現單一對象修改和批量修改功能。

  • 修改一條數據
// 參數為User對象 userDao.update(User user);
  • 批量修改數據
// 參數為User對象集 userDao.updateInTx(List<User> users);

3、刪除數據

  • 刪除一條數據
userDao.delete(User user);
  • 根據主鍵ID刪除數據
userDao.deleteByKey(K key);
  • 批量刪除數據
userDao.deleteInTx(List<User> users);
  • 刪除所有數據
userDao.deleteAll();

4、查詢數據

  • 查詢所有數據-三種方式
// 方式一 List<User> list = userDao.queryBuilder().list(); // 方式二 List<User> list = new ArrayList<>(); Iterator iterator = userDao.queryBuilder().listIterator(); while (iterator.hasNext()) { User user = (User) iterator.next(); // 一般用來篩選需要的對象 list.add(user); } // 方式三 userDao.loadAll();
  • 懶加載-記得使用完之后關閉掉close
LazyList<User> list = userDao.queryBuilder().listLazy(); list.close();
  • 條件查詢
// keyWord為關鍵字 // 查詢相等數據 userDao.queryBuilder().where(UserDao.Properties.URealname.eq(keyWord)).unique(); // 查詢相等數據集 userDao.queryBuilder().where(UserDao.Properties.URealname.eq(keyWord)).list(); // 查詢不相等數據 userDao.queryBuilder().where(UserDao.Properties.URealname.notEq(keyWord)).list(); // 模糊查詢 userDao.queryBuilder().where(UserDao.Properties.UBirthday.like("%" + keyWord + "%")).list(); // 范圍查詢-minValue最小值,maxValue最大值 userDao.queryBuilder().where(UserDao.Properties.UBirthday.between(minValue, maxValue)).list(); // 查詢大于 userDao.queryBuilder().where(UserDao.Properties.UHeight.gt(keyWord)).list(); // 大于等于 userDao.queryBuilder().where(UserDao.Properties.UHeight.ge(keyWord)).list(); // 小于 userDao.queryBuilder().where(UserDao.Properties.UWeight.lt(keyWord)).list(); // 小于等于 userDao.queryBuilder().where(UserDao.Properties.UWeight.le(keyWord)).list(); // 升序查詢 userDao.queryBuilder().orderAsc(UserDao.Properties.Id).list(); // 倒序查詢 userDao.queryBuilder().orderDesc(UserDao.Properties.Id).list();
  • 原生SQL查詢
// 查詢有朋友的用戶信息 String sql = "_id in (select f_uid from friend)"; userDao.queryBuilder().where(new WhereCondition.StringCondition(sql)).list();
  • 線程查詢
final Query query = userDao.queryBuilder().build(); new Thread(new Runnable() {@Overridepublic void run() { query.forCurrentThread().list(); } }).start();
  • 一對一查詢
List<Friend> list = friendDao.queryBuilder().list(); for (Friend friend : list) { User user = friend.getUser(); }
  • 一對多查詢
List<User> list = userDao.queryBuilder().list(); for (User user : list) { List<Friend> friends = user.getFriends(); }

greenDao提供了很多方法,這里只是寫了一些常用方法。

GitHub地址

轉載于:https://www.cnblogs.com/Free-Thinker/p/9887718.html

總結

以上是生活随笔為你收集整理的ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。