android数据库 android001_baseDao sdk使用指南
文章目录
下载本sdk
android001 baseDao使用指南
baseDao使用起来非常简洁方便。
实体类配置
- 我们知道实体类是与数据库中的表一一对应的,那么我们如何通过实体类控制表名呢?非常简单,我们只需要在实体类中添加注解:@DbTable(“tableName”)即可。
例如:1
2@DbTable("tableName")
public class Feeding {
当然了,你也可以不设置表名,那么sdk会默认使用你实体类的类名作为表名:”Feeding”
如何通过实体类控制表的列名呢?与上面的一样,如下即可:
1
2@DbField("columnName")
Integer capacity;实体类必须有无参的公共构造函数,例如:
1
2
3
4
5
6/*
*
* 必须存在,否则抛出异常:entity class must have public and no parameter constructor
*/
public Feeding() {
}实体类中支持的数据类型包含那些呢?
- String
- int、 Integer
- long、Long
- double Double
- byte[]
建立对应的数据库关系
创建一个Dao对象,继承com.android001.lubandao.BaseDao。要将将你实体类Class传入泛型,例如:1
2
3
4
5
6
7
8
9
10
11public class FeedingDao extends BaseDao<Feeding> {
@Override
public String createTableByUser() {
return null;
}
@Override
public List<Feeding> query(String sql) {
return null;
}
}
我们必须实现两个方法createTableByUser()和query()。
- 覆写创建表方法:createTableByUser
- 用户直接返回null:则sdk会自动创建表。
- 用户自己创建:用户自己创建表时,表的列名需要与实体类的field中标记的注解值形同。(我们建议有用户自己创建)
- 覆写查询方法: 本方法是供用户自定义使用的,本sdk中已提供查询方法。
获取dao对象
- 获取BaseDaoFactory
在获取dao对象之前,我们需要先获取BaseDaoFactory。
默认方式获取BaseDaoFactory:
1
BaseDaoFactory baseDaoFactory = BaseDaoFactory.getInstanceByDefault(Context)
通过配置DatabaseConfig获取BaseDaoFactory:
1
2
3
4DatabaseConfig config = new DatabaseConfig();
//这里传入file,也就是说可有由用户自己设定数据库文件的位置
config.setDatabaseFile(File databaseFile)
BaseDaoFactory baseDaoFactory = BaseDaoFactory.getInstanceByConfig(DatabaseConfig databaseConfig)
- 获取到对象
以上面的FeedingDao为例子,我们如何获取FeedingDao,以便使用BaseDao中的方法呢?我们通过BaseDaoFactory获取。1
2
3
4
5
6
7
8
9
10
11/**
* 获取BaseDao子类事例对象
*
* @param daoClazz BaseDao子类的Class
* @param entityClass BaseDao子类操作的实体对象Class
* @param <T> BaseDao子类的实体
* @param <M> 实体操作的对象
* @return
*/
public synchronized <T extends BaseDao<M>, M> T getDataHelper(Class<T> daoClazz, Class<M> entityClass) {
}
例如:1
FeedingDao dao = backFactory.getDataHelper(FeedingDao.class, Feeding.class);
通过dao对象执行增删改查
sdk内部提供的增删改查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* 插入表中一条数据
* @param entity 要插入的实体类
* @return 插入表的行ID,如果执行出现错误则返回-1
*/
Long insert(T entity);
/**
* 更新表格,entity为要更新的新对象,where为要更新的条件。同为一个Class。
* @param entity 要更改的新值
* @param where 要更改的条件,即:where子句,在sqliteDatabase中对应的是whereClause和whereArgs
* @return 影响到的行数
*/
int update(T entity, T where);
/**
* 删除符合where子句的行数,返回值为执行删除语句影响的行数
* @param where where子句,在sqliteDatabase中对应的是whereClause和whereArgs
* @return 返回执行删除影响到的行数
*/
int delete(T where);
/**
* sql查询语句,直接执行rawQuery。供用户自己写符合自己条件的查询语句
* 要与SQLiteStatement结合使用
* @param sql 要执行的sql语句
* @return 返回查询到的对象列表
*/
List<T> query(String sql);
/**
* 查询
* @param where whereClause和whereArgs
* @return 返回查询到的对象列表
*/
List<T> query(T where);
/**
* 查询
* @param where whereClause和whereArgs
* @param orderBy 顺序依赖规则
* @param startIndex 开始位置
* @param limit limit子句
* @return 返回查询到的对象列表
*/
List<T> query(T where, String orderBy, Integer startIndex, Integer limit);用户通过继承BaseDao覆写的query方法(用户自定义)