Generator数据库的管理者

一、
Generator继承于LitePalBase,用来动态关联数据库。创建或者更新litepal.xml里面需要映射的类。基类主要的任务是从映射类里面读取属性,并且格式化数据类型。具体的分析工作将在子类里面完成。

private Collection<TableModel> mTableModels ;
private Collection<AssociationsModel> mAllRelationModels ;
这边有两个属性是用来记录所有的表和关联表。

1、执行sql语句
protected void execute(String[] sqls, SQLiteDatabase db)
子类可以调用这个方法取执行sql语句,或者重写execute方法实现自己的逻辑。

2、添加关联/更新关联
private static void addAssociation(SQLiteDatabase db, boolean force)
private static void updateAssociations(SQLiteDatabase db)

3、更新表
private static void upgradeTables(SQLiteDatabase db)

4、创建表
private static void create(SQLiteDatabase db, boolean force)

5、删除表
private static void drop(SQLiteDatabase db)

6、创建数据库
static void create(SQLiteDatabase db)

7、更新数据库
static void upgrade(SQLiteDatabase db)

二、 AssociationCreator
继承于Generator,处理表关联。

1、添加或更新表关联
  • void addOrUpdateAssociation(SQLiteDatabase db, boolean force)
  • void addAssociations(Collection<AssociationsModel> associatedModels, SQLiteDatabase db, boolean force)

2、生成SQL语句
  • String generateCreateTableSQL(String tableName, Map<String, String> columnsMap, boolean autoIncrementId)
  • String generateDropTableSQL(String tableName)
  • String generateAddColumnSQL

3、添加外键
void addForeignKeyColumn(String tableName, String associatedTableName,
               String tableHoldsForeignKey, SQLiteDatabase db)

三、Creator
继承于AssociationCreator。用来创建表。它将自动创建一个TableMoel对应的表。如果数据库中已经有存在的同名表,LitePal将会先删除在创建。

1、根据TableModel创建表
void createOrUpgradeTable(SQLiteDatabase db, boolean force)

2、获取创建表的SQL语句
String[] getCreateTableSQLs(TableModel tableModel, SQLiteDatabase db, boolean force)

3、获取删除表的SQL语句
String generateDropTableSQL(TableModel tableModel)

四、AssiciationUpdater
继承于Creator,用来更新表关联。

1、处理外键列
List<String> getForeignKeyColumns(TableModel tableModel)
boolean isForeignKeyColumn(TableModel tableModel, String columnName)
void removeForeignKeyColumns
List<String> findForeignKeyToRemove (TableModel tableModel)

2、删除给定表名的表
void dropTables(List<String> dropTableNames, SQLiteDatabase db)

五、Dropper
继承于AssociationUpdater,用来处理表删除操作。

1、删除映射列表中已经不存在的表。
void dropTables()

2、遍历需要删除的表
List<String> findTablesToDrop()

3、判断一个表是否需要删除
boolean shouldDropThisTable(String tableName, int tableType)

六、Upgrader
继承于AssociationUpdater,用来处理表更新操作。第一步是删除Model类中已经没有,但是数据库中海油的列。然后添加新增的列。最后再检查记录是否需要改变。

        private void upgradeTable() {
              removeColumns(findColumnsToRemove(), mTableModel .getTableName());
              addColumn(findColumnsToAdd());
              changeColumnsType(findColumnTypesToChange());
       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值