Generator数据库的管理者
2015-11-10 19:26
323 查看
一、
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)
[align=left]4、创建表[/align]
private
static
void
create(SQLiteDatabase db,
boolean
force)
[align=left]5、删除表[/align]
private
static
void
drop(SQLiteDatabase db)
[align=left]6、创建数据库[/align]
static
void
create(SQLiteDatabase db)
[align=left]7、更新数据库[/align]
static
void
upgrade(SQLiteDatabase db)
[align=left]二、AssociationCreator[/align]
[align=left]继承于Generator,处理表关联。[/align]
[align=left]1、添加或更新表关联[/align]
void
addOrUpdateAssociation(SQLiteDatabase db,
boolean
force)
void
addAssociations(Collection<AssociationsModel> associatedModels, SQLiteDatabase db, boolean
force)
[align=left]2、生成SQL语句[/align]
String generateCreateTableSQL(String tableName, Map<String, String> columnsMap, boolean
autoIncrementId)
String generateDropTableSQL(String tableName)
String generateAddColumnSQL
3、添加外键
void
addForeignKeyColumn(String tableName, String associatedTableName,
[align=left] String tableHoldsForeignKey, SQLiteDatabase db)[/align]
[align=left]三、Creator[/align]
[align=left]继承于AssociationCreator。用来创建表。它将自动创建一个TableMoel对应的表。如果数据库中已经有存在的同名表,LitePal将会先删除在创建。[/align]
[align=left]1、根据TableModel创建表[/align]
void
createOrUpgradeTable(SQLiteDatabase db,
boolean
force)
[align=left]2、获取创建表的SQL语句[/align]
String[] getCreateTableSQLs(TableModel tableModel, SQLiteDatabase db,
boolean
force)
[align=left]3、获取删除表的SQL语句[/align]
[align=left]String generateDropTableSQL(TableModel tableModel)[/align]
[align=left]四、AssiciationUpdater[/align]
[align=left]继承于Creator,用来更新表关联。[/align]
[align=left]1、处理外键列[/align]
[align=left]List<String> getForeignKeyColumns(TableModel tableModel)[/align]
boolean
isForeignKeyColumn(TableModel tableModel, String columnName)
void
removeForeignKeyColumns
List<String> findForeignKeyToRemove(TableModel
tableModel)
[align=left]2、删除给定表名的表[/align]
void
dropTables(List<String> dropTableNames, SQLiteDatabase db)
[align=left]五、Dropper[/align]
[align=left]继承于AssociationUpdater,用来处理表删除操作。[/align]
[align=left]1、删除映射列表中已经不存在的表。[/align]
void
dropTables()
[align=left]2、遍历需要删除的表[/align]
[align=left]List<String> findTablesToDrop()[/align]
[align=left]3、判断一个表是否需要删除[/align]
boolean
shouldDropThisTable(String tableName,
int
tableType)
[align=left]六、Upgrader[/align]
继承于AssociationUpdater,用来处理表更新操作。第一步是删除Model类中已经没有,但是数据库中海油的列。然后添加新增的列。最后再检查记录是否需要改变。
private
void
upgradeTable() {
removeColumns(findColumnsToRemove(),
mTableModel.getTableName());
[align=left] addColumn(findColumnsToAdd());[/align]
[align=left] changeColumnsType(findColumnTypesToChange());[/align]
[align=left] }[/align]
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)
[align=left]4、创建表[/align]
private
static
void
create(SQLiteDatabase db,
boolean
force)
[align=left]5、删除表[/align]
private
static
void
drop(SQLiteDatabase db)
[align=left]6、创建数据库[/align]
static
void
create(SQLiteDatabase db)
[align=left]7、更新数据库[/align]
static
void
upgrade(SQLiteDatabase db)
[align=left]二、AssociationCreator[/align]
[align=left]继承于Generator,处理表关联。[/align]
[align=left]1、添加或更新表关联[/align]
void
addOrUpdateAssociation(SQLiteDatabase db,
boolean
force)
void
addAssociations(Collection<AssociationsModel> associatedModels, SQLiteDatabase db, boolean
force)
[align=left]2、生成SQL语句[/align]
String generateCreateTableSQL(String tableName, Map<String, String> columnsMap, boolean
autoIncrementId)
String generateDropTableSQL(String tableName)
String generateAddColumnSQL
3、添加外键
void
addForeignKeyColumn(String tableName, String associatedTableName,
[align=left] String tableHoldsForeignKey, SQLiteDatabase db)[/align]
[align=left]三、Creator[/align]
[align=left]继承于AssociationCreator。用来创建表。它将自动创建一个TableMoel对应的表。如果数据库中已经有存在的同名表,LitePal将会先删除在创建。[/align]
[align=left]1、根据TableModel创建表[/align]
void
createOrUpgradeTable(SQLiteDatabase db,
boolean
force)
[align=left]2、获取创建表的SQL语句[/align]
String[] getCreateTableSQLs(TableModel tableModel, SQLiteDatabase db,
boolean
force)
[align=left]3、获取删除表的SQL语句[/align]
[align=left]String generateDropTableSQL(TableModel tableModel)[/align]
[align=left]四、AssiciationUpdater[/align]
[align=left]继承于Creator,用来更新表关联。[/align]
[align=left]1、处理外键列[/align]
[align=left]List<String> getForeignKeyColumns(TableModel tableModel)[/align]
boolean
isForeignKeyColumn(TableModel tableModel, String columnName)
void
removeForeignKeyColumns
List<String> findForeignKeyToRemove(TableModel
tableModel)
[align=left]2、删除给定表名的表[/align]
void
dropTables(List<String> dropTableNames, SQLiteDatabase db)
[align=left]五、Dropper[/align]
[align=left]继承于AssociationUpdater,用来处理表删除操作。[/align]
[align=left]1、删除映射列表中已经不存在的表。[/align]
void
dropTables()
[align=left]2、遍历需要删除的表[/align]
[align=left]List<String> findTablesToDrop()[/align]
[align=left]3、判断一个表是否需要删除[/align]
boolean
shouldDropThisTable(String tableName,
int
tableType)
[align=left]六、Upgrader[/align]
继承于AssociationUpdater,用来处理表更新操作。第一步是删除Model类中已经没有,但是数据库中海油的列。然后添加新增的列。最后再检查记录是否需要改变。
private
void
upgradeTable() {
removeColumns(findColumnsToRemove(),
mTableModel.getTableName());
[align=left] addColumn(findColumnsToAdd());[/align]
[align=left] changeColumnsType(findColumnTypesToChange());[/align]
[align=left] }[/align]
相关文章推荐
- SQLServer统计信息理解
- 20151110 oracle事务 redo undo
- MySQL的variables和status
- 数据库建表语句怎么写
- pl/sql 的 put和put_line区别
- 使用visio 2010建立sql server数据模型——手动画、利用逆向工程
- hive&mysql安装配置
- Oracle的tnsnames.ora配置(PLSQL Developer)
- mysql安装odbc
- oracle的内置函数
- mysql函数TIMESTAMPDIFF和FROM_UNIXTIME
- oracle用户创建及权限设置
- Oracle 通过sql profile为sql语句加hint
- 将指定SQL的执行计划从共享池删除的方法
- with as与hint materialize的使用
- 填坑 - 使用Entity Framework 6 + Sqlite进行DB first开发
- Oracle ORA-02020 : 过多的数据库链接
- windows平台下redis安装及配置文件介绍
- Redis在windows上的安装和配置
- Oracle自增列创建方法