多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 打造android ORM框架opendroid(一)――ORM框架的使用

打造android ORM框架opendroid(一)――ORM框架的使用

來源:程序員人生   發布時間:2015-01-22 09:09:31 閱讀次數:2557次

1、我的看法

我記得曾有1篇博客是介紹的litepal的使用,在這篇博客中我提到過:本來以為android本身提供的API已封裝的夠好了,根本不需要甚么ORM框架了,但是在使用了litepal后,我感覺使用ORM框架還是很有必要的,下面是我對ORM和android API的幾點看法:

1、做為API級別, android只能廣義封裝,而不能特定去封裝1個API,所以android 對sqlite的封裝已很強大了。

2、作為開發者,我們需要為項目提供足夠適配的解決方案,可能ORM框架比API更加合適項目。

所以說,ORM框架和原生API其實不沖突,其實不是使用了ORM就得拋棄原生API,乃至,我們可以利用原生API進行2次封裝,封裝出1個ORM框架,這也是這小系列博客的主題――利用原生API打造我們自己的ORM框架。


2、進入主題

開篇,要先介紹1個opendroid這個自己的ORM框架,然后使用幾分鐘時間去學會使用這個框架,這里學會使用其實不是目的,而是要在知道怎樣用的條件下,去實現1個ORM。固然opendroid(我的ORM框架名稱叫opendroid,是否是很騷的1個名字?)的開發僅用了零零散散的4天的時間,所以目前僅支持最基本的CRUD和數據庫升級方案,而且很有可能存在大量BUG,不過目的已到達了,就是要做1個自己的ORM。


3、使用opendroid

假設你之前用過ORM框架(不論是甚么平臺上的),那末你很快就可以上手opendroid,如果你沒有使用過ORM,也沒關系,相信只需要1遍就能夠弄定!

1、首先需要下載opendroid,現在這個項目我開源到了git@osc上,可以到下面地址下載jar包和源代碼

http://git.oschina.net/qibin/OpenDroid

2、下載后,將library中的opendroid.jar復制到項目的libs目錄下。

3、修改AndroidMenifest.xml文件的Application,添加anrdroid:name="android:name="org.loader.opendroid.app.DroidApplication"

4、新建將要與數據庫映照的java bean。

5、在asserts目錄下新建open_droid.xml文件,并將1下代碼復制到open_droid.xml文件中

<?xml version="1.0" encoding="utf⑻"?> <open-droid> <name value="school" /> <version value="1" /> <mapping class="org.loader.opendroid.Student" /> </open-droid>
這個xml中,name節點指定了數據庫的名稱;version節點指定了數據庫的版本,在以后的開發中只需要修改value的值,就能夠實現數據庫的升級;mapping可能會用多個,指定了與數據表映照的java bean,這里的Student對應的數據庫中肯定會有1個Student表。

6、創建與數據庫映照的java bean文件

package org.loader.opendroid; import org.loader.opendroid.db.OpenDroid; public class Student extends OpenDroid { private String stuName; private int stuAge; public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public int getStuAge() { return stuAge; } public void setStuAge(int stuAge) { this.stuAge = stuAge; } }
很普通的1個java bean,定義了兩個字段,并提供getter和setter方法,需要注意到是Student繼承了OpenDroid類,這個類是我們opendroid庫中的1個類。

7、開始使用opendroid的CRUD功能

在上面配置好了以后,我們就能夠在業務中很容易的實現CRUD功能了,

7.1、插入數據:

Student stu = new Student(); stu.setStuName("亓斌"); stu.setStuAge(18); stu.save();
在1系列set以后,只需要調用Student中的save方法就能夠將數據保存到數據庫中,這里你可能會有兩個疑問:1)、數據庫在哪創建的?2)、save方法哪里來的?在Student里并沒有看見這個方法。

回答上面的問題:

1)、數據庫在哪創建的?―― 在有數據庫操作的時候,opendroid會自動幫我們創建好數據庫和mapping中指定實體的表。

2)、save方法哪里來的?―― 固然是從OpenDroid中繼承過來的,以后的博客在實現opendroid的進程中,會說到這個方法。

7.2、更新數據

opendroid提供了1系列的方法來簡化update操作。

Student stu = new Student(); stu.setStuName("loader"); stu.update("_id>?", "4");
上面的代碼是將id大于4的stuName更新為loader,這里你可能又有疑問了:Student中我們并沒有定義id啊,這里怎樣可使用id呢? 是這樣的, 在定義實體類的時候并需要創建id字段,opendroid會自動幫我們創建1個_id字段。

還有甚么更新操作呢?

Student stu = new Student(); stu.setStuName("loader"); stu.update(4);
上面的代碼是將id為4的stuName更新為loader

固然,你也能夠使用ContentValues進行更新:

ContentValues cv = new ContentValues(); cv.put("stuName", "opendroid"); OpenDroid.update(Student.class, cv, "_id=?", "8");
很容易就理解了,這是將id大于8的stuName更新為opendroid.

好了,更新操作就說這么多,相信,已夠應付平常的開發工作了。

7.3、刪除數據

opendroid的刪除功能也很簡單,并且也像上面代碼這么直觀。

int length = OpenDroid.delete(Student.class, 1, 2, 3); System.out.println(length);
1行代碼就能夠弄定刪除,上面代碼是刪除id為1或2或3的數據。

使用條件刪除

int length = OpenDroid.delete(Student.class, "_id>?", "5"); System.out.println(length);
上面的代碼的作用是刪除id大于5的數據

在CRUD中相對麻煩點的就是查詢操作了,固然opendroid對查詢操作也進行了封裝。

Student result = OpenDroid.query.find(Student.class, 1); System.out.println(result.getStuName());

上面的代碼是查詢id為1的數據,并將查詢結果映照到Student類中。

List<Student> result = OpenDroid.query.find(Student.class); for(Student res : result) { System.out.println(res.getStuName()); }
哈哈,把條件省略就是查詢所有數據了,固然這里返回的List集合。


List<Student> result = OpenDroid.query.find(Student.class, 1, 5, 10); for(Student res : result) { System.out.println(res.getId() + " : " + res.getStuName()); }

查詢id為1或5或10的數據,注意是調用的OpenDroid中1個靜態變量query的方法。

List<Student> result = OpenDroid.query.columns("stuName", "stuAge").where("_id>?", "5").order("_id DESC").limit(3)
<span> </span> .find(Student.class); for(Student res : result) { System.out.println(res.getStuName() + " : " + res.getStuAge()); }

固然query中還提供了1系列方法來設置查詢語句中的where、order、limit等,

columns()方法是指定要查詢的字段

where()方法是指定查詢的條件

order()方法是指定查詢數據的排列方式

limit()方法是指定select語句的limit

最后調用find方法將數據查詢出來。


不知不覺,我們已將opendroid中最主要的crud操作基本全部掌握了,相信很容易就能夠理解這里代碼,下面來看看如何使用opendroid升級數據庫

1、修改open-droid.xml文件中version字段的value值。

2、添加或刪除mapping,或根據業務升級需求調劑某個實例類的字段

只需要上面兩步,在下次使用數據庫的時候,opendroid就會自動幫我們升級數據庫,并且會將現在的數據更新到新的表中,完全不用擔心數據庫升級進程中數據的丟失,固然我們拋棄的字段opendroid會自動疏忽。


1篇博客的時間,我們已掌握可opendroid的使用,絕大多數的ORM框架的用法也大差不差,所以你也1并掌握了ORM的基本語法。

在接下來的幾篇博客中,我會1步步的去講授opendroid是如何實現的,終究打造出1個屬于你自己的ORM框架!

馬上繼續《打造android ORM框架opendroid(2)――自動創建數據庫



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧洲大片在线播放 | 多人伦交性欧美精品欧 | 在线视频亚洲欧美 | 中文乱码在线观看 | 精品日韩欧美一区二区三区在线播放 | 一二三四视频社区在线中文 | 免费www视频 | 五月天免费在线视频 | 91福利视频免费观看 | 亚洲国产福利精品一区二区 | 日韩影院在线观看 | 国产v精品成人免费视频400条 | h网在线| 亚洲精品国产福利一区二区三区 | 亚洲精品国产三级在线观看 | tube12xxxxhd曰本| www插插 | 一级做a爱片就在线看 | 最近最新中文字幕高清免费 | 欧美xxxx做受欧美精品 | 免费看啪啪网站 | 欧美成人v视频免费看 | 波多野结衣视频在线播放 | 日本视频中文字幕一区二区 | 中文字幕一区二区三区在线播放 | 91精品久久久久久久久网影视 | 在线视频一区二区三区在线播放 | 国内一区二区三区精品视频 | tube日本xxxx69 | 国产婷婷一区二区在线观看 | 性做久久久久久久久老女人 | 一级毛片不卡免费看老司机 | 美女一级黄色片 | 国产在线视频第一页 | 尤物视频在线观看视频 | 国产免费播放一区二区 | 国产第一页亚洲 | 97精品伊人久久大香线蕉 | 国产欧美精品一区二区 | 国产91极品福利手机观看 | 欧美精品一区二区三区视频 |