位置: 编程技术 - 正文

KopDB 框架学习2——源码分析(kraken框架)

编辑:rootadmin

推荐整理分享KopDB 框架学习2——源码分析(kraken框架),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:kudos框架,kraken框架,kohana框架,kore框架,kore框架,koa框架,koa框架,koa2框架入门,内容如对您有帮助,希望把文章链接给更多的朋友!

我的博客:

上次我们主要是对 KopDB 框架的使用进行了分析,它是非常简单有用的。这次主要是对它的源码进行分析,进一步的来了解它的真面目。

点击这里去往 “KopDB 框架学习1——使用”

因为 KopDB 采用的是对象关系映射(ORM)模式,即我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。

使用 ORM 模式,主要是因为我们平时多用面向对象编程,只有少部分人才会比较精通关系型数据库。通过这种模式,可以让我们不考虑 SQL 语言的具体实现,从而专注于业务实现。

根据 ORM 模式的理念,我们每张表都应该对应一个模型,即,如果我们想要建一张 Person 表,就应该有一个 Person 类。

类关系图

核心类功能的介绍:1. BaseModel.java

所有的模型都应继承这个类,这个类的主要有两个方法:

getContentValues(): ContentValues:为将要进行的数据库操作获取表的字段和对应的值。方法是将对应的 model 通过反射的形式获取到它的列名和值,返回的是 ContentValues 对象。

getModels(Cursor curor):List<T>: 为查询数据库操作以后得到的数据进行解析,返回对应的 model 类型 的List。方法是将查询完数据库以后会得到一个 Cursor,所有的查询操作得到值都通过这个变量返回,对这个 cursor 中的对应列的值映射到对应的 model 中去。

2. DatabaseManager.java

最主要用到的类就是DatabaseManager类的,通过这类,我们完全了所有的数据库的操作,包括建表,增删查改等操作。注意,需要通过单例得到它的实例,主要方法有:

a. 初始化操作

数据库的初始化相关的操作,dbName为数据库的名称,version 就是数据库的版本,models 为需要映射到数据库中去的 model,具体映射方法我们在DatabaseTools.java类中来讲。

b. 查询操作

直接通过 claz 拿到数据库名字,根据 SQLiteDatabase 的实例直接去进行 query 的操作,query 的到 Cursor 的对象,所有的数据都在这里面,然后调用BaseModel.java中的getModels(Cursor curor)方法得到 List 数据,即完成。

c. 插入操作KopDB 框架学习2——源码分析(kraken框架)

insert 插入操作,有4个重载方法,这里只分析

方法的实现,其他的大同小异。先是创建了 DBMsgObject 对象,用来作为 Message 的 obj,所有的操作数据库操作都会到对应的 handle 去进行。具体 insert 方法如下:

如果是如下重载方法的话,只是对 models 多了一个 for 循环,具体代码就不再给出

d. 同步插入操作

syncInsert 同步插入操作,即在当前线程中去操作,而不是在子线程进行。除了syncInsert,其他所有的操作都是在 Handler 中完成的。代码如下:

e.更新操作

大部分和 insert 相同,这里给出不同的地方,只要是增加了条件,需要更新的条件通过调用getUniqueColumn(claz);方法得到唯一列,getUniqueColumn(claz);内部是通过调用getDatabaseFields(claz);方法得到HashMap

Update 的具体不同点的操作如下:完整的方法可以看 Github 上 lib 中的实现

f.替换操作

replace 的操作和 DatabaseManager中的 insert 四个重载方法类似,只是Message 中的类型不同:

g.删除操作

delete 的实现方式也比较简单,主要就是加入了删除的条件,具体可以看下面的代码,

3、DataBaseHandler.java

这个类的作用就是进行数据库的insert,update,replace,delete的处理。

我们通过 insert 方法来进行分析

四个步骤,1.得到 Message 的消息对象,这个 Message 就是我们在DatabaseManager.java中设置的 Message;2. 根据 Class 得到表名;3. 进行数据库插入操作;4. 调用 postToMainLoop(...) 方法回调到主线程中去,postToMainLoop(...)方法如下:

update 操作在数据库操作的时候增加了条件判断,如下:replace 操作就更加简单啦,直接把 insert 换个单词就行 ^ ^delete 操作,我们直接代码搞起:4. DatabaseTools.java

这个类的作用是:

数据库创建时进行建表,建索引: onCreate(...) 方法数据库升级时,进行升级操作:onUpgrade(...)方法删除表:alterTable(...)根据 Class 获取数据库表名

下面我们具体来分析: 数据库创建时的相关操作: 先建表,调用generateCreateTableSQL(claz);方法,再建索引generateCreateTableIndexSQL(claz)方法。具体实现如下:

主要的代码都已经给出,应该都能理解,文章有点长,但其实代码占了大部分的篇幅。整个项目并不是非常复杂,甚至连流程图都不需要画。

嗯,KopDB 框架的分析到这里就结束啦~~~

android自定义属性三部曲 我们在开发中经常需要为了保持应用在不同的移动设备平台下显示统一的UI风格,毕竟各个平台厂商针对界面风格进行自定义导致UI风格千变万化。所以

android TabHost小结 转载:TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout。TabWidget就是每个tab的标签,FrameLayout则是tab内容。1、如果我们使用extendsTabAcitivty,如同Li

android 判断切换后台 判断按下home键 写这个博客不是为了实现监听home键,而是判断切换后台,说过不写一些没意思的博客,监听home键或者屏蔽home键的方法,请百度。我这个篇博客只是想

标签: kraken框架

本文链接地址:https://www.jiuchutong.com/biancheng/385945.html 转载请保留说明!

上一篇:一个方便的图片加载框架——ImageViewEx(一个方便的世界作文)

下一篇:android自定义属性三部曲(android 自定义style)

  • 公司注销后虚开还查吗
  • 扫码开票开错了怎么改
  • 汇兑损益一般是多少
  • 增值税附加税有没有滞纳金
  • 利息费用和利息支出的区别计算公式
  • 购房发票是不是增值税
  • 小规模纳税人增值税申报表怎么填
  • 电子承兑汇票如何贴现网银操作
  • 上年减值准备收回如何做账务处理呢?
  • 经济补偿金也需要交个人所得税吗?
  • 公司改变工资结构变相降工资怎么办
  • 报销单冲抵借支做账
  • 制造费用属于成本类还是损益类
  • 普通发票红字冲销,需要退回原发票吗
  • 员工与单位解除劳动合同书范本
  • 失控发票不处理的后果
  • 发票没有存根联怎么办
  • 注册资本转让股权
  • 跨区经营的税务政策
  • 交到公户上的钱,还没到账可以退回吗?
  • 个人所得税完整证明
  • 冲减材料成本
  • 先征后退房产税的会计处理?
  • 玩穿越火线总是提示机器遇到
  • 鸿蒙系统通知栏和控制
  • 什么是comsol
  • 确认预计负债的必要条件
  • 收到汇算清缴的现金
  • 如何利用命令符复制文件
  • 增值税一般纳税人和小规模纳税人的区别
  • 山茶花的养殖方法盆栽
  • 购买用友财务软件
  • 材料采购计入资产负债表哪里
  • 库存商品出库怎么计算
  • phpqrcode
  • php语言采用什么方式执行
  • jdbc连接mysql数据库不成功
  • vuenode前后端交互的方式
  • vue destroyed销毁组件
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • js怎样遍历对象中的每个元素
  • 视同销售的增值税怎么申报
  • 关于低值易耗品的说法中不正确的是
  • 新准则下担保企业有哪些
  • 年底应交增值税销项税额要结平吗
  • 公司全额承担个税会计分录
  • 怎么实现宏的功能
  • 酒店周转材料怎么摊销
  • 2021年股权变更要怎么办理?
  • 小微企业确定条件
  • mysql开启远程访问权限
  • 怎么计算土地增值税收入
  • 什么是代扣代缴税收缴款凭证
  • 劳务费是否属于工资
  • 收到商业汇票计什么科目
  • 预付账款没有发票吗
  • 农产品加计扣除1%怎么计算和会计分录
  • 工会经费计提比例0.8%
  • 收回投标保证金 建立台账
  • sql字段转首字母大写
  • sql数据库怎样批量添加数据
  • windowsandbox
  • 如何关闭safari
  • linux常用命令top
  • win8系统如何关闭杀毒系统
  • 苹果电脑安装虚拟机会有什么影响
  • windows xp快捷键设置在哪
  • centos6 iptables配置
  • kpg是什么文件
  • WIN10怎么彻底删除works2
  • Win7系统打开文件夹没有自动排列选项
  • 如何在linux shell关闭443端口
  • nodejs如何配置环境变量
  • js校验密码复杂度
  • 基于JAVASCRIPT实现的可视化工具是
  • 纳税人不如实申报税收怎么办
  • 国家浙江税务局
  • 应纳税额减征额账务处理
  • 浙江省税务发票
  • 增值税发票选择确认平台查询不到以开出的进项发票?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设