|
Litepal使用的注意点(仅仅列出一些常见的):
1、当调用DataSupport的save()方法一直返回错误(false)的时候,很有可能是我们的javabean对象以及对应的配置有误,错误有可能如下:
bean对象以及bean对象的父类,内部类,一切bean对象文件里面出现过的类,一定要继承DataSupport类,并且在litepal.xml文件中配置。不继承,不配置,都会报错。
如果bean对象添加了成员变量id,那么id一定要是int 或者 long 类型,其他类型均会报错。
如果我们的对象只有一个成员id,例如我们的BaseBean经常就是只有一个成员id,那么项目运行起来,在创建基本表的时候依然会报错。原因是:不管是否添加id,litepal都会自动为我们添加id这个属性,因此表明litepal的一个bean对象不能只有一个名字为id成员。如果是有一个id,那么litepal在底层生成SQL语句的时候,会生成“id integer primary keyautoincrement , ”这是一句不完整的SQL语句,因此会报错。
2、save()方法一直返回错误(false)的时候,异常信息都是警告而不是错误,因此需要切换LogCat的过滤。
3、对于findAll()方法,它返回的是List<Bean对象>,因此需要我们去强制转换为ArrayList<T>,不然在add等操作的时候会报错,因为我们使用的都是List的实现类而不是List接口本身。强转如果不指定泛型T的时候Android Studio会提示没有类型检查的警告,但是我们可以忽略。
4、bean对象的所有成员变量的名字都不能和SQL的一且关键字冲突,原因也很简单,litepal在底层生成SQL语句的时候会把成员变量的名字拼成SQL语句。
5、成员如果是booleana;
其中a是我举例子用的名字,生成get以及 set方法的时候,Android Studio会把get方法名定义为“public boolean isA(boolean a)”,我们自己不要手贱把它改为getA,否则litepal也会报找不到方法的错。
6、额,最后一点是数据库的问题,因为id属性是默认自增长的,如果项目中自定义的ID不是自增长的话,最好自己再定义一个ID。比如商城项目中的商品ID,如果用户不是按照逐次增长的形式添加商品的话,商品被save()的时候,一开始是ID+1的,知道ID满足与已存在的商品ID自增长的规律的时候才能正确判断商品已存在。
|
|