LitePal集成

https://www.jianshu.com/p/8035eb5da7a2
https://github.com/LitePalFramework/LitePal

使用上確實簡單

集成流程:

1、在build.gradle裏添加依賴:
//數據庫框架
compile 'org.litepal.android:core:2.0.0'

2、在src-main目錄下新建assets文件夾,新建一個名爲litepal.xml的xml文件,裏面爲:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--名稱-->
  <dbname value="test2"/>
<!--版本號-->
  <version value="1"/>
  <list>
    <!--這裏是類映射,必填-->
    <mapping class="mo.com.db.Student"></mapping>
  </list>
  <!-- 直接設置這個,就表示數據庫存儲的位置,直接打開手機存儲就可以找到 -->
   <!--這個貌似是路徑,沒測試過,以後有時間。。-->
     <!-- <storage value="guolin/database"/>-->
</litepal>

3、在manifest裏的application節點裏添加:

android:name="org.litepal.LitePalApplication"

如果有自己的application,則在自己的application裏初始化

    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化LitePal數據庫
        LitePal.initialize(this);
    }

5、權限 有時候會權限錯誤

在manifest裏添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

親測不加一般不會報錯,沒搞懂這個是什麼原理,好像是和數據庫文件的存儲位置有關係

6、存儲實體類,需繼承LitePalSupport類,必須實現set get方法,也可以直接用構造器創建

7、具體操作:

   (1)增:實體類直接操作

           Student student = new Student("1238409","小明",21);
           //Student student = new Student();
           //student.setNumber("1238409");
           //student.setName("小明");
           //student.setAge(21);
           student.save();

   (2)刪:

            //表對應的類、條件、條件值
            LitePal.deleteAll(Student.class, "id > ?", "2");

   (3)改:可以調用父類的updateAll方法,也可以find出來後,修改,然後save

            Student student1 = new Student();
                    student1.setAge(0);
                    student1.setName("111111");
                    student1.setToDefault("age");
                    student1.updateAll("name = ?", "小明");

   (4)查:

           //按條件查
           List<Student> students1 = LitePal.where("age = ?", "21").find(Student.class);
           //查全部
           List<Student> list = LitePal.findAll(Student.class);
           //獲取第一條數據
           Student firstStu = DataSupport.findFirst(Student.class);
           //獲取最後一條數據
           Student lastStu = DataSupport.findLast(Student.class);
           //要查詢某幾列
           List<Student> someLineStu = DataSupport.select("number", "name").find(Student.class);
           //排序查詢,("列名 規則") desc降序 asc升序
           List<Student> orderStu = DataSupport.order("age desc").find(Student.class);
           //只查前5條
           List<Student> limitStu = DataSupport.limit(5).find(Student.class);
           //查詢結果的偏移量,跟limit搭配可以做分頁使用,下面是從第3條開始,共查詢5條
           List<Student> offsetStu = DataSupport.limit(5).offset(2).find(Student.class);
            //多種條件組合查詢
             /*List<Student> setStu = DataSupport.select("number", "name")
                                   .where("id > ?", "3")
                                   .order("age desc")
                                   .limit(5)
                                   .offset(4)
                                   .find(Student.class);*/
            //使用SQL語句查詢
             List<Student> students2 = new ArrayList<>();
                    Cursor cursor =
                        LitePal.findBySQL("select * from student where age = ? and id> ?", "21", "3");
                    if (cursor != null) {
                      while (cursor.moveToNext()) {
                        Student stu = new Student();
                        stu.setId(cursor.getInt(cursor.getColumnIndex("id")));
                        stu.setNumber(cursor.getString(cursor.getColumnIndex("number")));
                        stu.setName(cursor.getString(cursor.getColumnIndex("name")));
                        stu.setAge(cursor.getInt(cursor.getColumnIndex("age")));
                        students2.add(stu);
                      }
                      cursor.close();
                    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章