LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类, 很早的时候用过,是基于FMDB基础上封装的,现在记录下使用过程,年纪大了容易健忘 哈哈

#import "BaseDBModel.h"

@implementation BaseDBModel

//在类 初始化的时候

+ (void)initialize {

//如果getTableMapping 返回 nil, 会取全部属性, 如果有不想要的属性,可以使用

[self removePropertyWithColumnName:@"age"];

[self removePropertyWithColumnNameArray:@[@"age", @"name"]];

//修改列名

[self setTableColumnName:@"MyAge" bindingPropertyName:@"age"];

//手动设置关联外键变量名

//    [self setUserCalculateForCN:@""];

}

//是否将父实体类的属性也映射到sqlite库表

+ (BOOL)isContainParent {

return YES;

}

+(LKDBHelper *)getUsingLKDBHelper{

static LKDBHelper *helper;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

NSString *path = [NSHomeDirectory() stringByAppendingString:@"DB/sqlite.db"];

helper = [[LKDBHelper alloc] initWithDBPath:path];

});

return helper;

}

+(NSString *)getTableName{

return NSStringFromClass([self class]);

}

+(NSString *)getPrimaryKey{

return @"";

}

//手动or自动 绑定sql列

+ (NSDictionary *)getTableMapping {

//返回nil 就是自动绑定所有列名

return nil;

}

+(BOOL)dbWillInsert:(NSObject *)entity{

NSLog(@"will insert");

return YES;

}

//设置列属性====

+(void)columnAttributeWithProperty:(LKDBProperty *)property{

}

@end

接下来我们来写个小Demo

#import "ViewController.h"

#import "BaseDBModel.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

LKDBHelper *globalHelper = [BaseDBModel getUsingLKDBHelper];

[globalHelper dropAllTable];

//清空表数据  clear table data

[LKDBHelper clearTableData:[BaseDBModel class]];

BaseDBModel *model = [BaseDBModel new];

model.name = @"老技术";

for (int i = 0; i < 5; i++) {

model.age = i;

[model saveToDB];

}

//查询的操作====

NSMutableArray *searchResultArray = nil;

// sql 1    查找表所有记录

searchResultArray = [BaseDBModel searchWithSQL:@"select *from BaseDBModel"];

searchResultArray = [BaseDBModel searchWithWhere:@"select *from BaseDBModel where age > 0 "];

//  无条件查询 某个列的值

searchResultArray = [BaseDBModel searchColumn:@"age" where:nil orderBy:nil offset:0 count:0];

//  根据一个自增长的列,倒叙查询 最新10条数据  (自增长的列可以是 自定义属性ID,也可以是自带的 rowid)

searchResultArray = [BaseDBModel searchWithWhere:nil orderBy:@"ID desc" offset:0 count:0];

//  根据 and 条件 查询所有数据

searchResultArray = [BaseDBModel searchWithWhere:@"ID = 10 and name = 'laoli'" orderBy:nil offset:0 count:0];

//  根据 in 条件,查询所有数据

searchResultArray = [BaseDBModel searchWithWhere:@"ID in (10,20)" orderBy:nil offset:0 count:0];

BOOL result1 = [BaseDBModel updateToDBWithSet:@"name = '哈哈'" where:@"ID = 10"];

//  根据条件,删除多条数据

BOOL result2 = [BaseDBModel deleteWithWhere:@"name = '哈哈' and ID = 10"];

}

以上就是LKDBHelper的简单使用方法====

LKDHelper使用LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类,以这个类来相关推荐

  1. C++类对象排序operator重载操作

    类内默认含有this指针,bool operator==(const T& a) 类外则需要写两个参数,bool operator==(const T& a, const T& ...

  2. JSON字符串转为指定实体类对象

    创建JsonStringToClass对象即可 package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;im ...

  3. c语言 memset 段错误,段错误之memset对类对象的误用

    1.问题描述 实际项目中,定义一个如下的基类和子类,均包含有虚函数. //基类 class OriginalTask { public: OriginalTask() {}; virtual ~Ori ...

  4. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...

  5. C++ 对象和实例的区别,以及用new和不用new创建类对象区别

    起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题.当然这都是跟new的用法有关的.ne ...

  6. 段错误之 memset 对类对象的误用

    1.问题描述 实际项目中,定义一个如下的基类和子类,均包含有虚函数. //基类 class OriginalTask { public:OriginalTask() {};virtual ~Origi ...

  7. python类对象和实例对象

    类对象支持两种操作:属性引用和实例化. 属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name. 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称. 因此,如果类定 ...

  8. C++类对象在内存中的布局

    目录 一.前言 二.C++ 类对象的内存布局 2.1 只有数据成员的对象 2.2 没有虚函数的对象 2.3 拥有仅一个虚函数的类对象 2.4 拥有多个虚函数的类对象 三.继承关系中的C++类对象内存分 ...

  9. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

最新文章

  1. 将Project的内容导出成单独的XPO文件
  2. 为什么某些订单的参与者Participant无法被删除
  3. macappstore登不上去_武功山观星归来,缆车登顶,不徒步攻略!
  4. 学习STL map, STL set之数据结构基础
  5. Linux下快速安装MySQL教程
  6. 软件或jar包等名字里的GA意思
  7. 怎样看mysql是不是支持SSL_mysql是如何支持ssl通信的?
  8. 图论(二)--各种图介绍
  9. SPSS 非参数检验(图文+数据集)【SPSS 021期】
  10. ASP.NET OAuth:解决refresh token无法刷新access token的问题
  11. cad边长提取lisp_用lisp怎么提取cad中文字-内容-*通用符匹配(值 :设定)生成excel文件...
  12. 漫威宇宙影视作品及观看顺序
  13. 输入某年某月某日,计算并输出它是这一年的第几天。
  14. pywifi安装了,打了一行import pywifi还报错,解决方案来啦!
  15. PHP 编写“九九乘法表”
  16. 产品策划流程体系、工具
  17. 接上个文章(mzsock
  18. 盘点“PayPal黑帮”成员的传奇创业故事
  19. CAD图纸的转换和批量打印
  20. 开关量无线传输-1主4从

热门文章

  1. TP-LINK路由器刷DD-WRT实现无线中继详细教程
  2. 软件工程设计模式——OCP与DIP
  3. 关于计算机的英语作文120词,以朋友为话题的英语作文120词
  4. 【西瓜书笔记】前两章
  5. python中奇怪的知识又增加了
  6. Python崛起:“人生苦短,我用Python”并非一句戏言
  7. Pandas的 loc iloc ix 区别
  8. STM32笔记——定时器输入捕获功能(测量PWM的频率和占空比)
  9. 什么是边缘服务器?边缘计算的未来如何?
  10. Unexpected use of file extention “js“ for “@/render/core/scale/index.js“