前面说到LitePalBase是LitePal所有组件的基类,因此这边很重要的DataHandler就是继承与它,不过依然是抽象类。所有CRUD操作的组件都继承于DataHandler。快来让我们看一下它做了哪些事。
1、mDatabase -> SQLiteDatabase 数据库
2、query(...) -> List<T>
查询一个给定的model的表,返回数据。让我们看下入参
Class<T> modelClass,比如我要查询Song表的数据,传入Song.class;
String[] columns,要查询的列名,比如{name, size},如果传入是null,则返回所有的列;
String selection,条件过滤,例如"name=? and size>0"
String[] selectionArgs,条件过滤中?的参数
String groupBy,分组过滤
String having
String orderBy,排序
String limit,数据项个数限制
List<AssociationsInfo> foreignKeyAssociations,外键关联
3、mathQuery
用来处理聚合操作,比如count、sum、average、max、min等。
4、putFieldsValue
遍历入参的所有属性,并且把属性对应的值存到表中。通过Java的映射机制去调用属性的get方法取到属性对应的值。
一、DeleteHandler
继承于DataHandler。这个类的使用基于DataSupport,主要用来处理数据库中删除的操作。
1、
int
onDelete(DataSupport baseObj)
这是一个提供给其他类用来执行删除操作的开发接口。这里baseObj必须被保存,否则删除不生效。baseObj决定了要删除哪条记录。当记录被删除,所有引用的数据例如外键值也会被移除。下面列出几个不同条件下的删除操作:
int
onDelete(Class<?> modelClass,
long
id),删除指定表,指定数据;
int
onDeleteAll(String tableName, String... conditions),删除指定表某个条件下的数据;
int
onDeleteAll(Class<?> modelClass, String... conditions)
,删除指定表某个条件下的数据;
2、
private
int