LitePal

前言

郭霖开源项目使用笔记。

说明

  • LitePal映射规则非常轻量级,不像一些其它数据库框架需每模型类单配一映射关系XML,LitePal所有映射自动完成。据LitePal数据类型支持,可进行对象关系映射的数据类型共8种,int、short、long、float、double、boolean、String和Date。只要声明成这8种数据类型的字段都会被自动映射到数据库表中,不需任何额外配置。
  • 实体类中Object属性不会被映射到数据库表中。
    LitePal_第1张图片

方法

创建

SQLiteDatabase db = Connector.getDatabase();
或
Connector.getDatabase();

LitePal_第2张图片
删除

LitePal.deleteDatabase("数据库名");

列设默值

DrillingFluidMaterial drillingFluidMaterial = new DrillingFluidMaterial();
drillingFluidMaterial.setToDefault("visibleState");
drillingFluidMaterial.updateAll();

setToDefault()传要改字段名(类中字段名)

排序

asc正序
LitePal.order("widtheditdateAssist aes").find(Inputone.class);

desc倒序
LitePal.order("widtheditdateAssist desc").find(Inputone.class);
一次仅单字段排序(多字段无效)
用前注意本地数据库已排序否

配置

litepal.xml



    
    
    
    
    
    
        
        
        
        
        
    
    
    

数据库名不可大写字母开头
数据库建于data->data->包名->databases
数据库建于SD卡guolin/database目录

litepal.xml放于assets下一级包

二或其它级包报错

org.litepal.exceptions.InvalidAttributesException: dbname is empty or not defined in litepal.xml file, or your litepal.xml file is missing.

初始化

public class MyOwnApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
    ...
}

public class App extends LitePalApplication {
    
    @Override
    public void onCreate() {       
        super.onCreate();
        ...
    }
	...
}

主键

实体类无字段id时LitePal默置主键id(int或long),实体类有字段id时直被LitePal当作主键(int或long)。服务器返实体类字段id为String类型时因直被LitePal当作主键致主键应有数据类型(int或long)与返实体类字段id数据类型(String)冲突,此时服务器返实体类字段id更名为serviceId即可。

插入

多次插入数据,数据库表中数据不重复插入。

字段

建表时实体类大写属性自转小写
LitePal_第3张图片
LitePal_第4张图片

注意

  • 数据库头次创后改名即创(即同存多数据库),设版本不可控。
  • 默0,同法改1成功改回0失败。
    改1
    drillingFluidMaterial.setVisibleState(1);
    drillingFluidMaterial.updateAll("serviceid = ? and hgmc = ?", drillingFluidMaterial.getServiceId(), drillingFluidMaterial.getHgmc());
    
    改回0
    drillingFluidMaterial.setVisibleState(0);
    drillingFluidMaterial.updateAll("serviceid = ? and hgmc = ?", drillingFluidMaterial.getServiceId(), drillingFluidMaterial.getHgmc());
    
  • 修改数据不改主键值,保存数据主键值增1。
  • 一对多 ,一增则多增并自设对应外键;一改且连带多数据变化则多变化部分无外键。
  • 所建表含baseObjId字段
  • 注意命名,否实体类字段用SQL关键字(如username)致创表报错。
    an exception that indicates there was an error with sql parsing or execution
    

参考

你可能感兴趣的:(android)