LKDHelper使用LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类,以这个类来
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
#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以实体类对象进行数据库的操作,例如新建一个新闻实体类,以这个类来相关推荐
- C++类对象排序operator重载操作
类内默认含有this指针,bool operator==(const T& a) 类外则需要写两个参数,bool operator==(const T& a, const T& ...
- JSON字符串转为指定实体类对象
创建JsonStringToClass对象即可 package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;im ...
- c语言 memset 段错误,段错误之memset对类对象的误用
1.问题描述 实际项目中,定义一个如下的基类和子类,均包含有虚函数. //基类 class OriginalTask { public: OriginalTask() {}; virtual ~Ori ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题.当然这都是跟new的用法有关的.ne ...
- 段错误之 memset 对类对象的误用
1.问题描述 实际项目中,定义一个如下的基类和子类,均包含有虚函数. //基类 class OriginalTask { public:OriginalTask() {};virtual ~Origi ...
- python类对象和实例对象
类对象支持两种操作:属性引用和实例化. 属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name. 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称. 因此,如果类定 ...
- C++类对象在内存中的布局
目录 一.前言 二.C++ 类对象的内存布局 2.1 只有数据成员的对象 2.2 没有虚函数的对象 2.3 拥有仅一个虚函数的类对象 2.4 拥有多个虚函数的类对象 三.继承关系中的C++类对象内存分 ...
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
最新文章
- 将Project的内容导出成单独的XPO文件
- 为什么某些订单的参与者Participant无法被删除
- macappstore登不上去_武功山观星归来,缆车登顶,不徒步攻略!
- 学习STL map, STL set之数据结构基础
- Linux下快速安装MySQL教程
- 软件或jar包等名字里的GA意思
- 怎样看mysql是不是支持SSL_mysql是如何支持ssl通信的?
- 图论(二)--各种图介绍
- SPSS 非参数检验(图文+数据集)【SPSS 021期】
- ASP.NET OAuth:解决refresh token无法刷新access token的问题
- cad边长提取lisp_用lisp怎么提取cad中文字-内容-*通用符匹配(值 :设定)生成excel文件...
- 漫威宇宙影视作品及观看顺序
- 输入某年某月某日,计算并输出它是这一年的第几天。
- pywifi安装了,打了一行import pywifi还报错,解决方案来啦!
- PHP 编写“九九乘法表”
- 产品策划流程体系、工具
- 接上个文章(mzsock
- 盘点“PayPal黑帮”成员的传奇创业故事
- CAD图纸的转换和批量打印
- 开关量无线传输-1主4从
热门文章
- TP-LINK路由器刷DD-WRT实现无线中继详细教程
- 软件工程设计模式——OCP与DIP
- 关于计算机的英语作文120词,以朋友为话题的英语作文120词
- 【西瓜书笔记】前两章
- python中奇怪的知识又增加了
- Python崛起:“人生苦短,我用Python”并非一句戏言
- Pandas的 loc iloc ix 区别
- STM32笔记——定时器输入捕获功能(测量PWM的频率和占空比)
- 什么是边缘服务器?边缘计算的未来如何?
- Unexpected use of file extention “js“ for “@/render/core/scale/index.js“