文章目录
  1. 1. 下载本sdk
  2. 2. android001 baseDao使用指南
    1. 2.0.1. 实体类配置
    2. 2.0.2. 建立对应的数据库关系
    3. 2.0.3. 获取dao对象
    4. 2.0.4. 通过dao对象执行增删改查

下载本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
11
public 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对象

  1. 获取BaseDaoFactory
    在获取dao对象之前,我们需要先获取BaseDaoFactory。
  • 默认方式获取BaseDaoFactory:

    1
    BaseDaoFactory baseDaoFactory = BaseDaoFactory.getInstanceByDefault(Context)
  • 通过配置DatabaseConfig获取BaseDaoFactory:

    1
    2
    3
    4
    DatabaseConfig config = new DatabaseConfig();
    //这里传入file,也就是说可有由用户自己设定数据库文件的位置
    config.setDatabaseFile(File databaseFile)
    BaseDaoFactory baseDaoFactory = BaseDaoFactory.getInstanceByConfig(DatabaseConfig databaseConfig)
  1. 获取到对象
    以上面的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方法(用户自定义)

文章目录
  1. 1. 下载本sdk
  2. 2. android001 baseDao使用指南
    1. 2.0.1. 实体类配置
    2. 2.0.2. 建立对应的数据库关系
    3. 2.0.3. 获取dao对象
    4. 2.0.4. 通过dao对象执行增删改查