一、DataSupport
这个类是类和数据库表的桥梁。使用起来简直是无缝的映射。
你可以这么写:
* public class Person extends DataSupport {
* private int id;
* private String name;
* private int age;
* }
在此之前你可能是这么写:
* CREATE TABLE person (
* id integer primary key autoincrement,
* age integer,
* name text
* );
哪个代码更加的舒服呢?不言而喻。
这里提供了许多数据库操作的方法,方便开发者直接调用。
- ClusterQuery select(String... columns)
- ClusterQuery where(String... conditions)
- ClusterQuery order(String column)
- ClusterQuery limit( int value)
- ClusterQuery offset( int value)
- int count(Class<?> modelClass)
- int count(String tableName)
- double average(Class<?> modelClass, String column)
- double average(String tableName, String column)
- <T> T max(Class<?> modelClass, String columnName, Class<T> columnType)
- <T> T max(String tableName, String columnName, Class<T> columnType)
- <T> T min(Class<?> modelClass, String columnName, Class<T> columnType)
- <T> T min(String tableName, String columnName, Class<T> columnType)
- <T> T sum(Class<?> modelClass, String columnName, Class<T> columnType)
- <T> T sum(String tableName, String columnName, Class<T> columnType)
- <T> T find(Class<T> modelClass, long id)
- <T> T find(Class<T> modelClass, long id, boolean isEager)
- <T> T findFirst(Class<T> modelClass)
- <T> T findFirst(Class<T> modelClass, boolean isEager)
- <T> T findLast(Class<T> modelClass)
- <T> T findLast(Class<T> modelClass, boolean isEager)
- <T> List<T> findAll(Class<T> modelClass, long... ids)
- <T> List<T> findAll(Class<T> modelClass, boolean isEager, long... ids)
- Cursor findBySQL(String... sql)
- int delete(Class<?> modelClass, long id)
- int deleteAll(Class<?> modelClass, String... conditions)
- int deleteAll(String tableName, String... conditions)
- int update(Class<?> modelClass, ContentValues values, long id)
- int updateAll(Class<?> modelClass, ContentValues values, String... conditions)
- int updateAll(String tableName, ContentValues values, String... conditions)
- <T extends DataSupport> void saveAll(Collection<T> collection)
- int delete()
- int update(long id)
- int updateAll(String... conditions)
- boolean save()
- save(final ICallBack callback)
- void saveThrows()
二、DynamicExecutor
现在有个问题,LitePal如何获取到Model类属性的值呢?这里显然要用到反射机制。这个DynamicExecutor提供一个send方法运行动态的调用方法。
Object send(Object object, String methodName, Object[] parameters,
Class<?> objectClass, Class<?>[] parameterTypes)
*
@param
object
* The object to invoke method.
*
@param
methodName
* The method name to invoke.
*
@param
parameters
* The parameters.
*
@param
objectClass
* Use objectClass to find method to invoke.
*
@param
parameterTypes
* The parameter types.
*
@return
Returns the result of dynamically invoking method.
void
setField(Object object, String fieldName, Object value,
Class<?> objectClass)
通过反射机制设置属性的值。
Object getField(Object object, String fieldName, Class<?> objectClass)
通过反射机制获取属性的值