盒子
盒子

LitePal使用方法

参考于:

Android数据库高手秘籍

  • 数据库与表的创建
  • 在assets目录下创建litepal.xm文件

    litepal.xml

    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <litepal>
    <dbname value="LllerDemo" />
    <version value="1" />
    <list>
    <mapping class="io.github.grooters.lllerdemo.bean.NewData"/>
    </list>
    </litepal>

    通过以下语句创建含有NewData表的数据库

    1
    SQLiteDatabase db = Connector.getDatabase();

  • 数据表的更新
  • 修改完bean类后,只需将litepal.xml中的version value修改为原来基础上加1即可

  • 数据的修改
  • 1
    2
    3
    ContentValues values = new ContentValues();
    values.put("name", "llnl");
    DataSupport.update(NewData.class, values, 1);
    1
    2
    3
    ContentValues values = new ContentValues();
    values.put("name", "llnl");
    DataSupport.updateAll(News.class, values, "name = ?", "grooter");
    1
    2
    3
    NewData newData = new NewData();
    newData.setName("llnl");
    newData.update(1);
    1
    2
    3
    NewData newData = new NewData();
    newData.setTitle("llnl");
    newData.updateAll("name = ? and age > ?", "grooter", "10");
    1
    2
    3
    NewData newData = new NewData();
    newData.setToDefault("age");
    newData.updateAll();

  • 数据的插入
  • 向NewData表插入一行:

    1
    2
    NewData newData=new NewData("llnl","today","test",1);
    generalData.save();

  • 数据的删除
  • 删除id为1的所在行:

    1
    LitePal.delete(newData.class,1);

  • 数据表的关联
  • 只需在bean类中做相关的定义,比如在NewData这个bean类中,我定义了如下成员变量:

    1
    2
    3
    private NewIntro newIntro;
    private List<NewCategory> newCategorys;
    private List<NewComment> newComments;

    映射为表就是一个NewData表就对应多个NewIntro表

    此时在NewIntro表会多出一个newdata_id列

    多个NewData表对应多个NewCategory表和多个NewComment表

    此时会产生两个名分别为newcategory_newdata和newcomment_newdata的表

    这些表存有两个关联表的关联id

  • 数据查询
  • 对应的bean需要继承LitePalSupport

    查询NewData表中id为1的所有数据,并赋值给bean类:

    1
    NewData newData=LitePal.find(NewData.class,1);

    查询第一条和最后一条数据:

    1
    2
    NewData newDataFirst = LitePal.findFirst(NewData.class);
    NewData newDataLast = LitePal.findLast(NewData.class);

    查询id为1,3,5,7的数据赋值给List

    1
    2
    3
    4
    List<NewData> newDatas = DataSupport.findAll(NewData.class, 1, 3, 5, 7);

    long[] ids = new long[] { 1, 3, 5, 7 };
    List<NewData> newDatas = DataSupport.findAll(NewData.class, ids);

    连缀查找:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<NewData> newDatas = DataSupport.where("age > ?", "10").find(NewData.class);
    //仅查询name和sex属性
    List<NewData> newDatas = DataSupport.select("name", "sex")
    .where("age > ?", "10").find(NewData.class);
    //
    .order("publishdate desc")
    //仅查询10条数据
    .limit(10)
    //从第11条数据开始查询查询10条
    .limit(10).offeset(10)

    激进查找

    除了查询NewData表还会查询与该表关联的表:

    1
    NewData newDatas = DataSupport.find(NewData.class, 1, true);

    不能迭代查询,即不能查询与NewData表关联表的关联表

    原生查询

    1
    Cursor cursor = DataSupport.findBySQL("select * from NewData where age>?", "10");
    支持一下
    扫一扫,支持Grooter
    • 微信扫一扫
    • 支付宝扫一扫