Android資料庫框架設計一
前言
Android開發中我們或多或少都會接觸到資料庫。Android中提供了一個佔用記憶體極小的關係型資料庫-SQLite。雖然Android系
統中提供了許多操作SQLite的API,但是我們還是需要手動去編寫SQL語句,這經常會出現一些莫名其妙的問題。所以便出現了
許多ORM(物件關係對映)框架。其中比較著名的有GreenDao、OrmLite、Litepal等。
常用的資料框架:
資料庫框架 | 訪問地址 |
基於自己對框架的理解:
1.建立註解
annotatio | 作用 |
DbField | 用來控制建立資料庫列表的欄位 |
DbTable | 用來控制資料庫表名 |
@Target(ElementType.TYPE) //申明類 |
2.建立bean及資料庫表
@DbTable("tb_student") public class Student { @DbField("_id") private Integer id; private String age; private String sex; private String hight; public Student(String age, String sex, String hight) { /** * 規範所有的資料庫操作 */ public interface IBaseDao<T> { /** * 插入資料 * @param entity * @return */ long insert(T entity); /** * 更新資料 * @param entity * @param where * @return */ long update(T entity,T where); /** *刪除資料 * @param where * @return */ int delete(T where); /** * 查詢資料 * @param where * @return */ List<T> query(T where); List<T> query(T where,String orderBy,Integer startIndex,Integer limit); List<T> query(String sql); } /** * @author :created by ${yangpf} * 時間:2018/6/8 19 * 郵箱:[email protected] * 建立資料庫表 */ public class BaseDao<T> implements IBaseDao<T> { /** * 持有資料庫操作的引用 */ private SQLiteDatabase sqLiteDatabase; /** * 表名 */ private String tableName; /** * 持有操作資料庫所對應的java型別 */ private Class<T> entityClass; /** * 標識:用來表示是否做過初始化操作 */ private boolean isInit=false; /** * 定義一個快取空間(key-欄位名 value-成員變數) */ private HashMap<String ,Field> cacheMap; /** * * @param sqLiteDatabase * @param entityClass * @return */ protected boolean init(SQLiteDatabase sqLiteDatabase, Class<T> entityClass) { this.sqLiteDatabase = sqLiteDatabase; this.entityClass = entityClass; //可以根據傳入的entityClass型別來建立表,只需要建一次 if(!isInit){ //自動建表 //取到表名 if(entityClass.getAnnotation(DbTable.class)==null){ //反射到類名 tableName=entityClass.getSimpleName(); }else{ //取註解上的名字 tb_student tableName=entityClass.getAnnotation(DbTable.class).value(); } if(!sqLiteDatabase.isOpen()){ return false; } //執行建表操作 //create table if not exists tb_student(_id integer,age varchar(20),sex varchar(20),hight varchar(20)) //單獨用個方法來生成create命令 String createTableSql=getCreateTableSql(); sqLiteDatabase.execSQL(createTableSql); cacheMap=new HashMap<>(); initCacheMap(); isInit=true; } return isInit; } public class BaseDaoFactory { private static final BaseDaoFactory ourInstance = new BaseDaoFactory(); public static BaseDaoFactory getOurInstance() { return ourInstance; } private SQLiteDatabase sqLiteDatabase; /** * 定義建立資料的路徑 * 建議寫到SD卡中,好處,APP讓刪除了,下次再安裝的時候,資料還在 */ private String sqliteDatabasePath; private BaseDaoFactory() { //可以先判斷有沒有SD卡 sqliteDatabasePath = "data/data/com.retrofit.androidsqlliteutils/test.db"; sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(sqliteDatabasePath, null); } /** * 用來生產basedao物件 */ public <T> BaseDao<T> getBaseDao(Class<T> entityClass) { BaseDao baseDao = null; try { baseDao = BaseDao.class.newInstance(); baseDao.init(sqLiteDatabase, entityClass); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return baseDao; } } |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); initView(); } @Override public void onClick(View view) { if (view.getId() == R.id.vt_insertData) { BaseDao baseDao = BaseDaoFactory.getOurInstance().getBaseDao(Student.class); baseDao.insert(new Student("18", "男", "1.8米")); } } private void initView() { vtInsertData = (TextView) findViewById(R.id.vt_insertData); vtInsertData.setOnClickListener(MainActivity.this); Toast.makeText(this,"新增成功",Toast.LENGTH_LONG).show(); } |
檢查結果:
使用SQLite工具開啟test.db
到此成功!!! 後續補充
相關推薦
Android資料庫框架設計一
前言Android開發中我們或多或少都會接觸到資料庫。Android中提供了一個佔用記憶體極小的關係型資料庫-SQLite。雖然Android系統中提供了許多操作SQLite的API,但是我們還是需要手動去編寫SQL語句,這經常會出現一些莫名其妙的問題。所以便出現了許多ORM
Android資料庫框架一、GreenDao
簡述:greenDAO 是一個將物件對映到 SQLite 資料庫中的輕量且快速的 ORM 解決方案。 其優點還包括以下幾點: 1.存取速度快; 2.支援資料庫加密; 3.輕量級; 4.啟用實體; 5.支援快取; 6.程式碼自動生成; 7.greenDAO 支援 pr
Android 資料庫框架litepal的使用
來源:郭霖大神http://blog.csdn.net/guolin_blog/article/details/38461239 要想熟練地操作任何一個數據庫,最最基本的要求就是要懂SQL語言,這也是每個程式設計師都應該掌握的技能。雖說SQL博大精深,要想精通確實很難,但最基本的一
Android 資料庫框架GreenDao與LitePal
更多幹貨 分散式實戰(乾貨) spring cloud 實戰(乾貨) mybatis 實戰(乾貨) spring boot 實戰(乾貨) React 入門實戰(乾貨) 構建中小型網際網路企業架構(乾貨) python 學習持
Android 資料庫框架 DBFlow 的使用
原文首發於微信公眾號:jzman-blog,歡迎關注交流! DBFlow 是一個基於註解處理器開發的使用方便的 ORM Android 資料庫,該庫簡化了很多多餘的程式碼,並且提供了好用的 API 來處理與資料庫的互動,讓開發者專注 App 的開發。下面將從以下幾個方面
Android資料庫框架-Archiver(LiteOrm)的使用
轉自:Android資料庫框架-Archiver(LiteOrm)的使用 在Android開發中,大家開發不同專案,不同的專案就不有不同需求。但是不管是什麼專案都會涉及到資料儲存。比如SharePreferences,SQLite,File等方式。但是我最近開
Android 資料庫綜述(一) 資料庫片的升級與資料的遷移操作
Android 資料庫綜述(一) 資料庫片的升級與資料的遷移操作 SQLiteOpenHelper 是 Android平臺提供給我們一個數據庫輔助類來建立或開啟資料庫 onCreate(SQLiteDatabase db) : 當資料庫被首次建立時執行該方法,一般將建立
Android資料庫框架GreenDao&Realm實戰分析
Android開發的童鞋應該都知道,使用官方的SQLite資料庫,可以滿足我們大部分增刪改查的需求,然而隨著Android技術的逐步成長,你會慢慢發現SQLite越來越不能滿足我們的需求。總結為以下主要幾點: 1、創表,增刪改查需要些大量程式碼,開發效率極低
Android網路框架設計
一、構建思路 1、構建一個Request用來封裝 HTTP請求的型別、請求頭引數、請求體、優先順序、返回型別、等一些必要的屬性。 這個Request定義為抽象的,使得使用者可以擴充套件。 2、構建一個佇列(BlockingQueue) 用來存貯這些請求,使用
Android-資料庫框架彙總
一:OrmLite簡述: 優點: 1.輕量級;2.使用簡單,易上手;3.封裝完善;4.文件全面。缺點:1.基於反射,效率較低(本人還沒有覺得效率低);2.缺少中文翻譯文件整合方法:把jar包複製到as的libs資料夾下,並且引用jar包即可用於學習的相關部落格:我的部落格總結
Android MVP框架設計(1)
1.介面設計 V:定義資料處理規範的介面 public interface IHandler<T> { void onBefore(); //載入前 void setData(T data); //View層呼叫
Android 資料庫開發(一)SQLite3概述
前言 SQLite是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域專案,設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在Android、iOS等
android資料庫框架LitePal的簡單使用
GitHub地址:https://github.com/LitePalFramework/LitePal 步驟1:下載 compile 'org.litepal.android:core:1.4.0' 步驟2: 配置檔案litepal.xml 在 assets 資料夾
Android 資料庫框架 —— GreenDao
package cn.hlq.greendaostudy.entity; import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Id; import org.greenrobot
遊戲UI框架設計(一) : 架構設計理論篇
遊戲UI框架設計(一) ---架構設計理論篇 前幾天(2017年2月)看到一篇文章,國內王健林、馬雲等大咖們看好的未來十大最有“錢途”產業中,排名第一的就是“泛娛樂”。 所以我們發現最近幾年無論是BAT企業還是萬達等,都紛紛投資遊戲、電影、動漫等泛娛樂產業。
Android EventBus框架(一)之使用詳細介紹
研發DEMO背景 最近開發專案遇到一個情景,就是在APP主頁MainActivity展示列表,有收藏功能,但是點收藏的時候,需要當前使用者是已經登入身份,因此當用戶點選列表item收藏按鈕時,如果使用者沒有登入,便會跳轉到APP的登入頁(LoginActivi
Android資料庫框架greenDao學習筆記 2
引言 上篇部落格中介紹了greenDao的整合方式,這篇部落格,我們介紹如何使用greenDao建立我們需要的資料表。補一張圖(來自官網),來理解greenDao,大家意會吧。 註解 先上一張圖,來對greenDao的註解有一個直觀的認識: Schema 通過在Gr
Android路由框架設計與實現
http://www.sixwolf.net/blog/2016/03/23/Android%E8%B7%AF%E7%94%B1%E6%A1%86%E6%9E%B6%E8%AE%BE%E8%AE%A1/
LitePal——Android資料庫框架完整使用手冊
LitePal for Android LitePal是一個開源的Android庫,使開發人員使用SQLite資料庫非常簡單。您無需編寫任何SQL語句就可以完成大部分資料庫操作,包括建立或升級表,增、刪、改、查操作,合計函式等。LitePal的設定也很簡單,您只許5分中
Android多執行緒操作sqlite資料庫連線池框架的一種設計思路
我們在Android應用程式開發當中經常會用到資料庫,一般在有兩種主要開發思路。 第一種:每次需要對資料庫操作的時候建立連線,操作完成後,馬上關閉連線。 這個方式一般用於不怎麼頻繁操作資料庫的情況,用完後馬上關閉達到節省系統資源的目的。 第二種:應用程式一