首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用反射实体类方案

看过很多ORM实体类方案,大多是用反射来读数据库数据,这样当频繁操作实体类时候效率很低,我借鉴了一位朋友思路,采用.NET 2.0泛型技术,为实体类提供一个通用查询和持久化方案。...,可以选取实体类指定字段,而不是一次选取全部字段。...这对于一个拥有大字段来说很有用。字段选取都是通过实体类对象.属性 方式,完全面向对象,用起来有点像LINQ,呵呵。 为啥说读取数据不需要反射?...因为PDF.NET实体类有内置“属性-属性值”字典,我们来看看具体是如何实现: ///          /// 根据数据阅读器对象,查询实体对象集合(注意查询完毕将自动释放该阅读器对象...整个实体类方案原理很简单,但实体类代码比较多,手写代码还是比较累人,所以框架提供一个代码生成器,从数据库生成实体类或者将自己编写SQL语句映射成实体类

77080
您找到你想要的搜索结果了吗?
是的
没有找到

JPA使用-实体类上常用注解

@DynamicInsert 场景描述 在JPA中添加/更新都是使用save()方法,一般情况下,创建数据时候,会给某些字段设置默认值,避免在插入时候手动赋值,如创建时间,是否删除等等。...save方法会把没有值对象,默认赋空值,造成,原数据默认值失效。...; 从上面数据定义语句,我们可以看出来,是否删除是有默认值0,但是我们实现执行后结果为 ?...解决方案 在Role实体类上加上@DynamicUpdate注解,告诉JPA没有值属性不用赋NULL值,重新添加角色如下图所示 ?...@DynamicUpdate 场景描述 在JPA使用过程中,我们常遇到更新数据库中记录数据,一般情况下,我们只会把更新值传给save()方法,但是该方法会把没有更新值全部覆盖掉。

1.9K10

JPA实体类注解

@Entity   标注于实体类上,通常和@Table是结合使用,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中,没有指定名称的话就表示与数据库中表名为该类简单类名相对应...默认加载为立即加载 *ToMany 默认加载方式为懒加载 @Entity @Entity标记在类上面,作为实体类标识 @Table 当实体类与其映射数据库不同名时需要使用 @Table...标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。 ...@Table 标注常用选项是 name,用于指明数据库  @Table标注还有一个两个选项 catalog 和 schema 用于设置所属数据库目录或模式,通常为数据库。...@Id @Id设置对象表示符,标识实体类属性映射对应主键 @GeneratedValue 设置标识符生成策略,常与@Id一起使用  参数:strategy指定具体生成策略  方式一:@

3.8K70

使用OQL“语言”构造ORM实体类复杂查询条件

我们来看看OQL是怎么解决这些问题,现在举一个今天同事遇到问题: 有这样一个实体类 MyEntity,实体类具体定义在此忽略,有兴趣朋友请看我博客。...AND F2='2')    And    (F3='a' OR F3='b' OR F3='c' )    And    (F5='A' OR F5='B' OR F5='C' ) 下面我们来看看怎么使用...OQLCompare cmp = new OQLCompare(e); OQLCompare cmpCondtion1= cmp.Compare(e.F1) & cmp.Compare(e.F2); //等于实体类属性值比较可以直接这样写...语句: //e 是前面的实体类对象实例 OQL q=OQL.From(e).Select().Where(cmpResult).End; 当然也可以这样写,但没有上面简单: OQL q=new OQL(...); 最后就可以到数据库查询实体了,非常简单: List result=EntityQuery.QueryList(q); 至此,一个复杂ORM查询使用OQL语言就完成了

1.6K60

实体类变形【2】—— 行列转换

我们还是看一个小例子,这回是数据库设计。 假设我们要做一个小学成绩单,设计一个成绩 小学生成绩 字段:学生名称、语文成绩、数学成绩、美术成绩等。...等等这个类是用于显示数据,添加时候还可以使用这个类吗?...我这里想到了两种方案: 第一种方案:一个只对应一个实体类,三个就会有三个实体类,这样添加时候没有什么问题,显示时候就要用类关系方式联系到一起,具体怎么做我还不知道呢。      ...这个就是我不想用三层一个原因,总是要想实体类和数据如何对应,很烦,左也不是,右也不是,不知道如何来做,那就干脆不用三层这种形式吧。看了亚同学帖子,好像他也有这样问题?!...第一个优点是相对于现在三层里面的实体类来说,三层里实体类都是以为最小单位,属性只能是类里面的一部分,不能独立存在,这样就很不灵活,这就是第一个问题由来。

95290

实体类变形【1】—— 餐盘原理

在亚历山大同学post里面我说可以让实体类不必一一对应,但是并没有详细说明如何来做,也有人想问我是怎么做,那么我就说一下。...按照我对OO一知半解,我可能会设计下面这几个类,这几个类都是和(或者是视图)一一对应。不管和谁对应,并不是重点。...不知道这么设计对不对,先假设这么设计是对吧,那么由于属性不同,就需要设计多个不同实体类,给实体类赋值部分也要写多个,业务逻辑部分也要针对各个实体类属性名称来编写,UI也要根据实体类属性名称来取值...但是ORM使用也并不是很轻松。 3、业务逻辑处理。依据业务需求对实体类属性名称来做处理。 4、显示数据。依据页面布局和实体类属性名称来提取数据。      ...1、有浪费嫌疑,由于属性数量是固定,有的时候并不需要这么多,那么多出来属性就浪费了。 2、需要写一个属性和字段名对应关系说明(约定),各个部分按照这个约定行事。

58470

Kotlin中实体类创建方式

基本格式 class 类{ } 属性基本格式 var 属性名字 : 类型 下面是实体类代码 package com.dldw.entity import java.util.* class.../** * 构造器 constructor Kotlin中有一个主构造函数和多个二级构造函数 * 主构造函数是类头一部分,跟在类后面 * 在Java中,构造方法必须和类名相同,而在Kotlin...: String private var age: Int //在Kotlin中使用init初始化代码块,它作用是为了主构造函数服务,由于主构造函数是放在类首部,是不能包含任何初始化执行语句...null来对每一个用lateinit修饰属性做初始化,而基础类型是没有null类型,所以无法使用lateinit。...numOther = numOther") } } fun main(args: Array<String ) { // 测试局部类 Local().partMethod() } 以上这篇Kotlin中实体类创建方式就是小编分享给大家全部内容了

3.9K10

浅谈Java项目中要不要使用实体类

我想了想,似乎当初在学校学就是这样,老师规定:一个实体类对应一个,方便接收参数,参数检验也方便。规范如此,我也就学到了这个。...后来,通过各种途径学习,我了解到,写实体类其实是为面向对象这个思想服务,大型项目中,领域建模是必须,一系列实体构成对一个领域模型描述和实现,,建模最直接体现就是实体类,领域和数据库不一定一一对应...这段话看起来不太好懂,应该结合实体类作用来看: 实体类作用(需要面向对象一点很基本知识): 实体类就是一个载体。 现在设计差不多都是一张就等于业务里面的一个类。...所以我们在操作某个时(比如更改这个信息),我们就可以在前台定义一个这样对象,然后将其对应属性赋值,然后传到后台。...容易维护   不过不用实体类也就要求了开发人员需要对表结构非常熟悉,对业务对象非常熟悉,由于Map里面,key是当变量来用,记得有次key敲错了,找半天,浪费了大量时间。

68630

打造轻量级实体类数据容器

一般来说,操作实体类往往伴随着一个实体类集合,而这些集合就是实体类容器,在这里我将“容器”视作一个比集合更广泛概念,例如Entity Framework做了一个重量级容器ObjectContext...,用于与作为对象(这些对象为 EDM 中定义实体类实例)数据进行交互。    ...为了做到通用,具体每个数据使用还是交给使用者自己去处理吧,所以采用一个委托方法来处理: ///          /// 采用自定义映射方式,将数据容器中数据映射到指定类中 ...先看一个例子,我们假设系统中还存在一个实体类 Group,我们使用PDF.NETOQL表达式写一个支持两个实体连接查询语句: OQL q=OQL.From(user)          .InnerJoin...框架中实体对象查询语言--OQL,已经可以完成很复杂查询了,包括多实体类关联查询。

678100
领券