一步步实现自己的ORM(三)】的更多相关文章

章节列表: <一步步实现自己的ORM(一)> <一步步实现自己的ORM(二)> 通过前面两篇文章,我们大致了解了ORM的基本原理,是通过Attribute+反射获取表的基本信息,再用表名和字段名拼接成SQL语句.而前面我们只是完成了CRUD部分的CUD,还没完成读取(Retrieve)操作,今天就来完成这个R操作.我们先看下平时写实体类转换代码是怎么写的: static List<User> ToObject1() { SqlDataReader reader = nu…
在第一篇<一步步实现自己的ORM(一)>里,我们用反射获取类名.属性和值,我们用这些信息开发了简单的INSERT方法,在上一篇文章里我们提到主键为什么没有设置成自增长类型,单单从属性里我们无法识别哪个是主键,今天我们用Attribute来标识列,关于Attribute,引用MSDN里描述      MADN的定义为:公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET F…
最近在研究ORM,尝试着自己开发了一个简单的ORM.我个人不喜欢EF因为跟不上EF升级太快了,再说公司里还停留在c# 3.5时代,对于NHibernate配置太复杂看到就头晕,就心生自己做一个ORM的念头,现在把开发过程中的点点滴滴记录下来,供自己和新手参考,大神请直接忽略这篇文章. ORM(object relation mapping)对象关系映射,常用来映射数据库里表.字段等信息.ORM的原理无非就是用配置文件.Attribute来映射数据关系.我们一步步来来创建ORM,定义一个实体类,然…
一.什么是PendSV PendSV是可悬起异常,如果我们把它配置最低优先级,那么如果同时有多个异常被触发,它会在其他异常执行完毕后再执行,而且任何异常都可以中断它.更详细的内容在<Cortex-M3 权威指南>里有介绍,下面我摘抄了一段. OS 可以利用它“缓期执行”一个异常——直到其它重要的任务完成后才执行动 作.悬起 PendSV 的方法是:手工往 NVIC的 PendSV悬起寄存器中写 1.悬起后,如果优先级不够 高,则将缓期等待执行. PendSV的典型使用场合是在上下文切换时(在不…
一.联结表 数据仍使用前文中的数据. 1.子查询 作为子查询的SELECT语句只能查询单个列.企图检索多个列将返回错误. -- 作为查询条件使用 -- 查看TNT2订单对应的客户ip(order表) SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2'); -- 根据TNT2订单的客户ip查看客户信息(cust表) SELECT cust_name,…
ORM 查询操作 修改 views.py 文件 from django.shortcuts import render, HttpResponse from app01 import models from app01.models import Book,Author,Publisher def data_oper(req): # 获取 book 表 id 为2的价格 book = models.Book.objects.filter(id=2).values("price") pr…
上一张优化了ORM的INSERT.UPDATE.DELETE,但将数据库里的值填充到实体类这块还没优化.另外有博友在网上咨询说你这个都是查询所有字段的,而他的需求是按需查询字段,不是一次性取出来所有字段的,在这里我请这位朋友耐心等待,这个会在后面章节提到的.这次我们先优化datareader->entity,将数据库里的值Mapping到实体类里,我们常用的有两种办法第一种是采用EMIT方式,第二种是采用Expression tree表达式,这两种方案在性能上差异不大,但写法上第二种较第一种比较…
通过前3章文章,大致对ORM有一定的了解,但也存在效率低下(大量用了反射)和重复代码,今天我们要对ORM进行优化. 具体流程如下: 我们优化的第一个就是减少反射调用,我的思路是定义一个Mapping,把表名.字段名信息缓存起来,EntityMapping 表示实体类信息对应数据库中的table,MemberMapping表示实体类的属性对应数据库中的Column. EntityMapping代码: class EntityMapping { /// <summary> /// 对应实体类类型…
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中.我们具体介绍了游戏开发的概念以及 Cocos2d-x 与其它游戏引擎的不同之处,甚至已经学会了它与众不同的 内存管理机制. 想必大家已经非常期待開始探索 Cocos2d-x 游戏开发的世界了. 在后面的文章中,我们将结合详细的实例,从 Cocos2d-x 游戏开发的基本元素讲起.  从这章開始,我会在学习…
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中,我们具体介绍了游戏开发的概念以及 Cocos2d-x 与其它游戏引擎的不同之处.甚至已经学会了它与众不同的 内存管理机制. 想必大家已经非常期待開始探索 Cocos2d-x 游戏开发的世界了. 在后面的文章中,我们将结合详细的实例,从 Cocos2d-x 游戏开发的基本元素讲起.  从这章開始,我会在学习…
事件,MSDN解释:类或对象可以通过事件向其他类或对象通知发生的相关事情.发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. 有关事件的理论与好处,在这里就不再废话了,感兴趣的可以参考MSDN的讲解.这里就通过有一个demo演示一下如何一步步实现标准的事件处理过程.可以做为以后代码中的事件编写参考.要运用事件,需要了解委托与事件,可以去学习相关教程. 模拟有一个恐怖的军火提供商要我们实现一个火箭炮的订单管理程序.效果图: 第一步:基本实践 从MSDN上看了事件的讲解,我们…
laravel中提供DB facade(原始查找).查询构造器.Eloquent ORM三种操作数据库方式 1.连接数据库 .env 数据库配置 DB_HOST=localhost dbhost DB_DATABASE=laravel dbname DB_USERNAME=root username DB_PASSWORD=root password 2.使用DB facade实现CURD (1) 新建路由 Route::get('city', 'cityController@index');…
1.ORM三种模型 模型之间的三种关系:一对一,一对多,多对多. 一对一:实质就是在主外键(author_id就是foreign key)的关系基础上,给外键加了一个UNIQUE=True的属性: 一对多:就是主外键关系:(foreign key),fk建在多的一方 多对多:(ManyToManyField) 自动创建第三张表(当然我们也可以自己创建第三张表:两个foreign key) 2.字段类型 <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必…
本文以laravel5.0.22为例. 生产环境建议使用laravel5.1版本,因为该版本是长期支持版本.5.1文档更详细:http://laravel-china.org/docs/5.1. 环境需求 Laravel5.0 框架有一些系统上的需求: PHP 版本 >= 5.4 Mcrypt PHP 扩展 OpenSSL PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展 在 PHP 5.5 之后, 有些操作系统需要手动安装 PHP JSON 扩展包.如果你是使用…
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7 翻译:Android Studio 中文组(大锤译) 鉴于Android Studio使用Gradle构建项目,在IDE的使用过程中可能会遇到很多令人头疼的问题.大锤也是第一次接触,为有个基本的认识,特找来Android官方手册,和大家一起学习学习.翻译不当之处,望指出. 为什么要用Gradle…
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7翻译:Android Studio 中文组(大锤译) 鉴于Android Studio使用Gradle构建项目,在IDE的使用过程中可能会遇到很多令人头疼的问题.大锤也是第一次接触,为有个基本的认识,特找来Android官方手册,和大家一起学习学习.翻译不当之处,望指出. 为什么要用Gradle?…
很久没写东西了,寒假比较低效,几乎没写代码.只在慕课网上刷完了linux系列课程,现在用linux熟了很多以及看了大部分<鸟叔-linux服务器架设>那本书,虽然对于写代码并没有什么卵用,但是真的感觉对于网络逻辑传输的硬件软件都有了个很爽的认识.还有又刷了次廖大神的python教程发现比以前多了很多内容.近几天在看一本叫<Data Structures and Algorithms with Python>的书,争取的是每天上午看一章,觉得写的挺好的,刚看到第四章,感觉对于pyth…
一.异常的构成 new Exception() 创建异常对象 throw 抛出异常对象(主要性能损耗位置) try{}catch{} 捕捉异常对象 C#里面异常对象分为两个子类ApplicationException.SystemException,前者主要是提供给应用程序自定义的异常类,后者是提供给系统定义的异常类 二.如何使用异常 异常的正常逻辑是:由底层抛出,由高层处理 1.底层方法或者提供给其他人使用方法内的一些参数过滤或其它异常应该向上抛出 如(借鉴现成代码懒得写了): public…
1.本章学习总结 1.1思维导图 本章学习体会及代码量学习体会 1.2.1学习体会 在暑假的时候就有加入新生学习群,对C语言有一定的基础,所以这周的学习相对轻松,但一些细节方面的知识并不是很了解.在这周的学习中,掌握了C语言程序设计中的一些规范,例如:在标识符的命名中应该采用驼峰命名法,并且对变量的命名要清晰易懂:在使用大括号的时候应该分行--在之前做分支结构的相关习题的时候多用的是if-else和else-if语句,对switch语句的掌握并不是很好,可以说是基本没掌握,在预习完课本及老师的讲…
HTTP请求和响应步骤 TCP/IP协议 TCP三次握手 HTTP协议 HTTP请求报文 HTTP响应报文 TCP四次挥手 HTTP请求和响应步骤 以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的.  TCP/IP协议  TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟…
一 . ORM ORM是“对象-关系-映射”的简称.(Object Relational Mapping,简称ORM) 二. 单表操作 要想将模型转为mysql数据库中的表,需要在setting里面写上这个,把原来带的替换掉 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'book', # 要连接的数据库名,连接前需要创建好 'USER': 'root', # 连接数据库的用户名 ', # 连接数…
一.导入jar包.1.hibernate的jar包2.jdbc的jar包 二.配置Hibernate.建立hibernate.cfg.xml mysql配置如下: <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd&q…
简介 实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.是微软的一个ORM框架.简单的说就是把关系型数据库映射成面向对象模型. 一篇更加详细的文文: ========================= Entity Framework快速入门 实体框架(Entity Framework)简介 实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.是微软的一个ORM框架. ORM知识补充…
实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. ORM知识补充:什么是O/R Mapping? 广义上,ORM指的是 面向对象 的对象模型和关系型 数据库 的数据结构之间的相互转换. 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口.理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要要了解…
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用. 首先搭建环境: 一.导入jar包. 1.hibernate的jar包 2.jdbc的jar…
题外话: 中国的技术论坛要赶上stackoverflow的水平.至少还需35年.中国程序猿笔者的特点是:太浮躁,太easy下总结.太自得其乐,虽说写的是为了让别人更好的看.却也演变成了一种"你看,我懂这么多"的长篇申明--要的就是你不懂.这也似乎是中国没有有名的开源的原因. 当然了,依据马克思理论,经济基础决定上层建筑,这也是能够理解的,拿着那点工资,生活节奏那么快,压力那么大,写免费的文章.为别人答疑,显得有点奢侈. 我建议全部基础教程类的文章.须要做到下面二点: [1] 给出执行环…
做一个搜索,三个输入条件,求这个条件的交集.起初我的思路是按照操作的流程,一步步的来做这三个筛选. let searchResults = []; //step1 根据id搜索,得到一个子集. if (searchId) { //开始按照id查找,查找目标为allData let eds = allData; searchResults = this._searchWithId(searchId, eds); searchFlag = true; } if (searchTime) { //开始…
2.1 Entity Framework简介 Ado.net Entity Framework 是Microsoft推出的ORM框架. 2.1.1 什么是ORM 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 . ORM三个字母分别代表如下图所示…
一. Mvvm定义 MVVM是Model-View-ViewModel的简写.即模型-视图-视图模型.[模型]指的是后端传递的数据.[视图]指的是所看到的页面.[视图模型]mvvm模式的核心,它是连接view和model的桥梁.它有两个方向:一是将[模型]转化成[视图],即将后端传递的数据转化成所看到的页面.实现的方式是:数据绑定.二是将[视图]转化成[模型],即将所看到的页面转化成后端的数据.实现的方式是:DOM 事件监听.这两个方向都实现的,我们称之为数据的双向绑定.总结:在MVVM的框架下…
Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:Ruheng 地址:http://www.jianshu.com/p/c1d6a294d3c0 本文以HTTP请求和响应的过程来讲解涉及到的相关知识点. 第一 HTTP请求和相应步骤 图片来自:理解Http请求与响应http://android.jobbole.com/85218/ 以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的. 第二 TCP/IP协…