FastDatabase基础使用

个人写的一个android开发库。轻型,快速,全面。欢迎fork和star   fastlib库


FastDatabase是封装sqlite数据库以对象为基础调用。所以需要写好实体类

一个最基本的实体类,id被注解为主键并且自动增长

public class Person{
    @Database(keyPrimary = true,autoincrement = true)  //主键且自动增长
    public int id;
    public int age;
    public String sex;
    public String name;
}
 

接下来的动作都是根据有主键的实体类来做的

存和改只需要一行代码来保存或更新这个Bean

private void savePerson(){
    Person person=new Person(); //如果为person指定了id且表中存在此id则为修改
    person.name="张三";
    FastDatabase.getDefaultInstance(this).saveOrUpdate(person); //使用默认数据库存储Person对象
}


取出某个对象.在取出来后应判断列表或对象是否为空,因为如果表不存在或者未查询到指定信息的话会返回空对象

private void getPerson(){
    List<Person> personList=FastDatabase.getDefaultInstance(this).get(Person.class); //默认取出整张Person表的数据
    Person firstPerson=FastDatabase.getDefaultInstance(this).getFirst(Person.class); //取表中第一条数据
}

删除删除数据库中某个对象,下面的例子是删除表中第一条数据

private void deletePerson(){
    Person person=FastDatabase.getDefaultInstance(this).getFirst(Person.class); //取出表中第一条数据
    FastDatabase.getDefaultInstance(this).delete(person); //删除这条数据
}


高级功能

条件过滤

对于没有主键或者一些更灵活性的动作我们可以使用过滤条件来处理.比如我们想删除人员信息中女性的数据,可以这样写

FastDatabase.getDefaultInstance(this)  //获取默认数据库
        .setFilter(And.condition(Condition.equal("sex","女")))  //指定过滤条件为sex字段为'女'(也就是女性人员)
        .delete(Person.class);  //目标是Person数据表
Condition有6种:biger(比指定的值更大),smaller(比指定的值更小),emptyValue(是null的),notEmptyValue(不是null的),equal(和指定的值相等),unequal(指定值之外的数据)

取出年龄小于20的人员

List<Person> list=FastDatabase.getDefaultInstance(this)  //获取默认数据库
        .setFilter(And.condition(Condition.smaller("age","20")))  //过滤条件为age小于20(年龄小于20的人员)
        .get(Person.class);  //目标是Person数据表

数据库切换

在获取的时候指定数据库

FastDatabase.getInstance(this,"databaseName");
获取到数据库后临时切换到指定数据库

FastDatabase.getDefaultInstance(this).toWhichDatabase("databaseName");


自动更新

在讲解使用之前需要一点基础知识:

android中sqlite数据库的功能是不完全的.不支持修改列名,删除列,修改列类型或者属性也是不支持的,有一些命令也是无效的,比如begin transaction。只能靠SQLiteDatabase.exeSql(command)逐行输入。

当做了上列不支持的行为后如果你想保存某些数据到下一个版本中需要改表名,导数据从旧表到新表(可能需要丢弃一些不需要的数据掉)等等,具体请自行查询

延续之前使用的Person类。我们添加一个address的字段,如果你没有更新数据库版本,那么这个字段是不可用的,存储的时候将会异常

这时你需要更新数据库版本。升级也只需要更新版本号,在使用这张表时会自动更新

FastDatabase.getConfig().setVersion(2);

一般情况下这行代码是放在application的onCreate中,这里我偷个懒直接放MainActivity中

修改代码中的onCreate方法和updatePerson()方法

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    FastDatabase.getConfig().setVersion(2);
    init();
}
private Person updatePerson(){
    Person person=new Person();
    person.id=0;
    person.name=mInputName.getText().toString();
    person.address="贝克街23号";
    String idStr=mInputId.getText().toString();
    if(!TextUtils.isEmpty(idStr))
        person.id=Integer.parseInt(idStr);
    return person;
}

随便存储一条信息,log

09-22 17:00:14.590 13618-13618/com.myapplication D/FastDatabase: 发现数据库版本需要升级,开始自动升级
09-22 17:00:14.610 13618-13618/com.myapplication D/FastDatabase: 表com.myapplication.Person增加1列
09-22 17:00:14.610 13618-13618/com.myapplication D/FastDatabase: 数据库升级完毕
09-22 17:00:14.640 13618-13618/com.myapplication D/FastDatabase: default.db<----com.myapplication.Person

查看所有

09-22 17:02:22.000 15564-15564/com.myapplication I/System.out: id:2 name:李四 address:null
09-22 17:02:22.000 15564-15564/com.myapplication I/System.out: id:3 name:王三麻 address:null
09-22 17:02:22.010 15564-15564/com.myapplication I/System.out: id:4 name:aaa address:贝克街23号

其中李四和王三麻是旧版本中的数据,自然是没有address的

到此告一段落。FastDatabase中还有很多功能和选项,如果有问题请在评论回复我

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值