写在前面:
移动端数据存储的主要特点:
1)数据存储在用户端,数据迁移困难(版本迭代,字段更新,数据表改变等)
2)一般的项目,数据库的使用以数据暂存为主,数据关系并不复杂,联表查询等功能使用并不是很多。
3)系统现有的sqlite3接口,不是面向对象操作,使用起来,还需要手动包装(不过也有大量的三方框架已经帮我们实现了ORM功能)
GYDB
基于以上的特性,我们研发了移动端数据框架:GYDB
项目地址:
iOS版地址:https://github.com/fengzhongdeshu/GYDB
Android版本地址:https://github.com/fengzhongdeshu/AndGYDB
引用
iOS :pod
pod 'GYDB', :git=>'https://github.com/fengzhongdeshu/GYDB.git'
Android:gradle
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Add the dependency
dependencies {
implementation 'com.github.fengzhongdeshu:AndGYDB:{tag}'
}
GYDB的特点:
1:GYDB受流行的博客开源项目wordpress影响,数据存储采用高表形式存储,做到了真正的平滑数据迁移,无感知版本迭代。
2:GYDB提供 ios & android两套框架,而且框架的api和设计完全一致,操作逻辑相同,节省开发时两端的沟通成本。
3. ios & android双端,功能及api同步更新。为项目开发管理也提供了便利。
4:GYDB纯面向对象操作,并不需要开发者掌握sql语句即可使用。
适用场景
任何以“万能”自居的事物都是耍流氓。
每个数据库杠架都有它适合的场景,所以在项目开发初期,我们都会有“技术选型”这一个环节。同样地,GYDB也有最适合它的使用场景
1)本框架属于ORM类型框架,存储和获取,都能以对象方式来操作。
2)可以忽略版本管理,所有要被添加的属性,只需要在要存储的对象中,添加一个属性即可,一切都是这么简单。
3)GYDB动态地扩展数据字段,数据表的特点,尤其对项目的数据变动情况,提供完整的兼容性。
4)追求android & ios端的代码统一,管理统一的项目。
使用简介
1.初始化配置:
在使用sdk前,我们需要对数据库做一些配置,如下:
iOS 可以在AppDelegate 中的application:didFinishLaunchingWithOptions:方法,或者在使用前,进行配置
[GYDBConfig shareInstance].dbName = @"gydb.db";
[GYDBConfig shareInstance].debug = YES ;
Android 可以在Application的子类的onCreate中,或者在使用本sdk前进行配置
GYDBBaseManager.get().init(this.getApplicationContext());
GYDBConfig.dbName="gydb.db";
GYDBConfig.debug =true ;
2.创建存储数据对象
iOS
@interface GYUser : NSObject
@property (nonatomic,assign) int _id ;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *hoppy;
@property (nonatomic,assign) int age ;
@property (nonatomic,assign) int score ;
@end
@implementation GYUser
@end
android
public class Userimplements Serializable{
private int _id ;
private Stringname ;
private Stringhoppy ;
private int age ;
private int score ;
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHoppy() {
return hoppy;
}
public void setHoppy(String hoppy) {
this.hoppy = hoppy;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
3.创建数据表操作对象
iOS
GYDBOprator *oprator = [GYDBOprator opratorWithModel:[GYUser class]] ;
Android:
GYDBOprator oprator= GYDBOprator.getInstance().initModel(User.class);
4.对象存储
iOS
GYUser *user = [[GYUser alloc]init] ;
user._id = self.idInuter.text.intValue ;
user.name = self.nameInuter.text ;
user.hoppy = self.hobbyInuter.text ;
user.age = self.ageInuter.text.intValue;
user.score = self.scoreInuter.text.intValue ;
BOOL bol = [[[GYDBOprator opratorWithModel:[GYUser class]]addSaveModel:user] save] ;
if(bol) {
[self.button setTitle:@"保存成功" forState:UIControlStateNormal] ;
}else{
[self.button setTitle:@"保存失败" forState:UIControlStateNormal] ;
}
Android
User u =new User() ;
u.set_id(Integer.valueOf(edit_id.getText().toString()));
u.setName(edit_name.getText().toString());
u.setHoppy(edit_hobbpy.getText().toString());
u.setAge(Integer.valueOf(edit_age.getText().toString()));
u.setScore(Integer.valueOf(edit_score.getText().toString()));
oprator.addSaveModel(u) ;
List list =oprator.save() ;
if (list.size()==0){
btn_add.setText("保存成功");
}else {
btn_add.setText("保存失败");
}
5.添加查询条件
iOS
[oprator whereColume:@"name" compare:@"=" value:@"张三"] ;
[oprator orWhereColume:@"score" compare:@">" value:@"80"];
[oprator andWhereColume:@"age" compare:@"=" value:@"18"];
Android:
oprator.where("name" , "like" , "张") ;
oprator.orWhere("age","=","18") ;
oprator.andWhere("score",">","60") ;
6.基础API
iOS
/**
查询
@return result
*/
-(NSArray*)query ;
/**
删除
@return result
*/
-(BOOL)remove ;
/**
更新
@return return value description
*/
-(BOOL)update ;
/**
保存
@return return 返回存储失败的model , 返回nil 表示全部存储成功
*/
-(NSArray*)save ;
Android:
/**
保存
@return return 返回存储失败的model , 返回nil 表示全部存储成功
*/
public List save()
/**
查询
@return result
*/
public List query()
/**
删除
@return result
*/
public boolean remove()
/**
更新
@return return value description
*/
public boolean update()
好了,我们的介绍先写到这里,如果大家喜欢的话,可以在项目上留个star
再重复一遍项目地址,项目中包含简单示例,大家可以直接运行查看基本使用.
iOS版地址:https://github.com/fengzhongdeshu/GYDB
Android版本地址:https://github.com/fengzhongdeshu/AndGYDB
暂无评论
要发表评论,您必须先 登录