<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                一、我的看法 我記得曾經有一篇博客是介紹的litepal的使用,在這篇博客中我提到過:本來以為android本身提供的API已經封裝的夠好了,根本不需要什么ORM框架了,但是在使用了litepal后,我感覺使用ORM框架還是很有必要的,下面是我對ORM和android API的幾點看法: 1、做為API級別, android只能廣義封裝,而不能特定去封裝一個API,所以android 對sqlite的封裝已經很強大了。 2、作為開發者,我們需要為項目提供足夠適配的解決方案,可能ORM框架比API更加適合項目。 所以說,ORM框架和原生API并不沖突,并不是使用了ORM就得拋棄原生API,甚至,我們可以利用原生API進行二次封裝,封裝出一個ORM框架,這也是這小系列博客的主題——利用原生API打造我們自己的ORM框架。 二、進入主題 開篇,要先介紹一個opendroid這個自己的ORM框架,然后使用幾分鐘時間去學會使用這個框架,這里學會使用并不是目的,而是要在知道怎么用的前提下,去實現一個ORM。當然opendroid(我的ORM框架名稱叫opendroid,是不是很騷的一個名字?)的開發僅用了零零散散的4天的時間,所以目前僅支持最基本的CRUD和數據庫升級方案,而且很有可能存在大量BUG,不過目的已經達到了,就是要做一個自己的ORM。 三、使用opendroid 假如你之前用過ORM框架(不管是什么平臺上的),那么你很快就能上手opendroid,如果你沒有使用過ORM,也沒關系,相信只需要一遍就可以搞定! 1、首先需要下載opendroid,現在這個項目我開源到了git@osc上,可以到下面地址下載jar包和源代碼 [http://git.oschina.net/qibin/OpenDroid](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文件,并將一下代碼復制到open_droid.xml文件中 ~~~ xml?version="1.0"?encoding="utf-8"?>?? open-droid>?? ????name?value="school"?/>?? ????version?value="1"?/>?? ????mapping?class="org.loader.opendroid.Student"?/>?? open-droid>?? ~~~ 這個xml中,name節點指定了數據庫的名稱;version節點指定了數據庫的版本,在以后的開發中只需要修改value的值,就可以實現數據庫的升級;mapping可能會用多個,指定了與數據表映射的java bean,這里的Student對應的數據庫中肯定會有一個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;?? ????}?? }?? ~~~ 很普通的一個java bean,定義了兩個字段,并提供getter和setter方法,需要注意到是Student繼承了OpenDroid類,這個類是我們opendroid庫中的一個類。 7、開始使用opendroid的CRUD功能 在上面配置好了以后,我們就可以在業務中很容易的實現CRUD功能了, 7.1、插入數據: ~~~ Student?stu?=?new?Student();?? stu.setStuName("亓斌");?? stu.setStuAge(18);?? stu.save();?? ~~~ 在一系列set以后,只需要調用Student中的save方法就可以將數據保存到數據庫中,這里你可能會有兩個疑問:1)、數據庫在哪創建的?2)、save方法哪里來的?在Student里并沒有看見這個方法。 回答上面的問題: 1)、數據庫在哪創建的?—— 在有數據庫操作的時候,opendroid會自動幫我們創建好數據庫和mapping中指定實體的表。 2)、save方法哪里來的?—— 當然是從OpenDroid中繼承過來的,以后的博客在實現opendroid的過程中,會說到這個方法。 7.2、更新數據 opendroid提供了一系列的方法來簡化update操作。 ~~~ Student?stu?=?new?Student();?? stu.setStuName("loader");?? stu.update("_id>?",?"4");?? ~~~ 上面的代碼是將id大于4的stuName更新為loader,這里你可能又有疑問了:Student中我們并沒有定義id啊,這里怎么可以使用id呢? 是這樣的, 在定義實體類的時候并需要創建id字段,opendroid會自動幫我們創建一個_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);?? ~~~ 一行代碼就可以搞定刪除,上面代碼是刪除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?result?=?OpenDroid.query.find(Student.class);?? for(Student?res?:?result)?{?? ????System.out.println(res.getStuName());?? }?? ~~~ 哈哈,把條件省略就是查詢所有數據了,當然這里返回的List集合。 ~~~ List?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中一個靜態變量query的方法。 ` List?result?=?OpenDroid.query.columns("stuName",?"stuAge").where("_id>?",?"5").order("_id?DESC").limit(3)??` ~~~ ?????????????????????.find(Student.class);?? for(Student?res?:?result)?{?? ????System.out.println(res.getStuName()?+?"?:?"?+?res.getStuAge());?? }?? ~~~ 當然query中還提供了一系列方法來設置查詢語句中的where、order、limit等, columns()方法是指定要查詢的字段 where()方法是指定查詢的條件 order()方法是指定查詢數據的排列方式 limit()方法是指定select語句的limit 最后調用find方法將數據查詢出來。 不知不覺,我們已經將opendroid中最主要的crud操作基本全部掌握了,相信很容易就可以理解這里代碼,下面來看看如何使用opendroid升級數據庫。 1、修改open-droid.xml文件中version字段的value值。 2、添加或刪除mapping,或者根據業務升級需求調整某個實例類的字段 只需要上面兩步,在下次使用數據庫的時候,opendroid就會自動幫我們升級數據庫,并且會將現在的數據更新到新的表中,完全不用擔心數據庫升級過程中數據的丟失,當然我們拋棄的字段opendroid會自動忽略。 一篇博客的時間,我們已經掌握可opendroid的使用,絕大多數的ORM框架的用法也大差不差,所以你也一并掌握了ORM的基本語法。 在接下來的幾篇博客中,我會一步步的去講解opendroid是如何實現的,最終打造出一個屬于你自己的ORM框架! 馬上繼續[《打造android ORM框架opendroid(二)——自動創建數據庫》](http://blog.csdn.net/qibin0506/article/details/42773281)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看