android ORM框架——Litepal

来源:互联网 发布:java工程师最低学历 编辑:程序博客网 时间:2024/05/21 13:55

android ORM框架——Litepal

Litepal:

LitePal is an Open Source Android library that allows developers to use SQLite databaseextremely easy. You can finish most of the database operations without writing even a SQL statement, including create or upgrade tables, crud operations, aggregate functions, etc. The setup of LitePal is quite simple as well, you can integrate it into your project in less than 5 minutes.

下面具体使用


建表

找到你下载的litepal的downloads目录,将litepal-1.1.1-src.jar复制到你工程的libs目录, 这还没完,还需要小小的配置一下: 打开manifest文件给application节点配置“android:name="org.litepal.LitePalApplication"”。既然是ORM框架,那肯定需要我们写几个实体类,实体类的类名对应数据库的表的名称,字段对应了数据库中的字段:    public class Student extends DataSupport {        private int id;        private String name;        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }    }                                       要让litepal知道这个类是要映射到数据库中的。在assets目录中创建litepal.xml文件:    <?xml version="1.0" encoding="utf-8" ?>    <litepal>        <dbname value="easydb"/>        <version value="1"></version>        <list>            <mapping class="com.itheima.luyangdemo1.Student"/>            <mapping class="com.itheima.luyangdemo1.Teacher"/>        </list>    </litepal>简单的说明一下:dbname是指定数据库名称,这里不需要加.db哦。 version不用想也知道是指定数据库的版本了(那是不是以后修改数据库版本只要该这个值就可以了? 嘿嘿, 必须就是这么简单),还有个list,list节点下有两个mapping仔细观察原来是声明的我们刚开始建立的那两个实体类。###好了,建表这一步就完成了, 只要你的代码有数据库操作, 建表就会自动完成。

插入数据

    public void insertData(){            Student stu1 = new Student();            stu1.setId(1);            stu1.setName("小明");            stu1.save();            Student stu2 = new Student();            stu2.setId(2);            stu2.setName("小红");            stu2.save();        }

更新

  • 使用ContentValues更新特定id的数据

    public void updateDate(){        ContentValues values = new ContentValues();        values.put("name", "小小明");        DataSupport.update(Student.class, values, 1);    }
  • 使用ContentValues更新特定条件的数据

    public void updateDate(){        ContentValues values = new ContentValues();        values.put("name", "小小明");        DataSupport.updateAll(Student.class, values, "id>?", "1");    }
  • 要修改全部数据

    public void updateDate(){        ContentValues values = new ContentValues();        values.put("name", "小小明");        DataSupport.updateAll(Student.class, values);    }
  • 优雅的更新特定id的数据

    public void updateDate(){        Student stu = new Student();        stu.setName("李四");        stu.update(1);    }
  • 优雅的更新特定条件的数据

    public void updateDate(){        Student stu = new Student();        stu.setName("李四");        stu.updateAll("id>?","1");    }
  • 优雅的更新所有数据

    public void updateDate(){        Student stu = new Student();        stu.setName("李四");        stu.updateAll();    }

删除

    public void delete(){            int deleteCount = DataSupport.delete(Person.class, 1);//删除id为1的            DataSupport.deleteAll(Student.class,"id>?","1");//带条件删除            DataSupport.deleteAll(Student.class);//删除所有        }

查询

  • 震撼的级联操作

    public void search(){        List<Student> stus = DataSupport.where("id>?", "0").order("id").limit(3).find(Student.class);        for(Student p : stus) {            System.out.println(p.getName());        }    }
  • 震撼的查询特定id的数据

    public void search(){        Student p = DataSupport.find(Student.class, 3);         //DataSupport.find(Student.class, 3, true); // 关联的表也会查询出来         System.out.println(p.getName());    }
  • 震撼的枚举查询(枚举查询是我给它起的名,可能不太确切,说白了就是sql语句的in)

    public void search(){        List<Student> phones = DataSupport.findAll(Student.class, 3, 4);         //DataSupport.findAll(Student.class,, true, 3, 4); // 关联的表也会查询出来         for(Student p : phones) {             System.out.println(p.getName());         }    }
  • 震撼的查询第一条数据

    public void search(){        Student p = DataSupport.findFirst(Student.class);         //DataSupport.findFirst(Student.class, true); // 关联的表也会查询出来         System.out.println(p.getName());    }
  • 除此之外litepal还给我们提供了一个可以“自由发挥”的方法,也就是自己书写sql语句

    public void search(){        Cursor cursor = DataSupport.findBySQL("select * from student where id=?", "3");         for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) {             System.out.println(cursor.getString(cursor.getColumnIndex("name")));         }         cursor.close();    }
0 0