实体类

.net实体新解

拜拜、爱过 提交于 2020-03-25 03:50:00
传统的开发模型中一般会有一个实体层(这里的实体和MVC开发框架中的实体不是一个概念), 这个实体层中的类,是数据库表在应用程序的映射,甚至类名称会与表一一对应.虽然是类,但是组成却只有属性,没有方法. 这类实体的作用是传递数据的载体,简洁明了,例如当一个方法参数个数超过3个,而这这三个参数又代表一个表的 相应字段时,他们就可以用一个实体类代替. 以上算是实体类的一个优势,当然它的优势不仅如此. 我们想想在数据层返回查询数据时,有几种格式? 一般会返回单个字段,单个DataTable,甚至是DataSet 单个字段很明了,我们暂且不提.说说DataTable,既然是DataTable,就是行的集合,每一行就可以用实体类 来映射,所以在数据返回dataTable时,可以直接将其转化为实体集合。这样做的再外层调用时会比DataTable 更直观,直接知道操作的是哪个具体的对象。 这种方法一般应用的场景: 单表查询,获得连表查询时表之间有继承关系,没有继承关系的连表查询的结果没法用一个实体表示,所以无法映射为实体集合。 开发过程中有一个原则是封装变化 我们在数据层操作数据表时肯定用到sql语句。select * from TableName(出于性能和规范原因,我不会直接用*,而是用相应的字段),好的,说到这里,变化出现了,就是这个查询字段 select ColumName from

PowerDesigner使用教程 —— 概念数据模型

自闭症网瘾萝莉.ら 提交于 2020-03-24 14:15:17
一、概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。 通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系 (Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个 DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。 CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的 静态特性、动态特性以及完整性约束条件 等,其中包括了 数据结构、数据操作和完整性约束 三部分。 1)数据结构表达为实体和属性; 2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作; 3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等); 二、实体、属性及标识符的定义 实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,学校中的每个学生,医院中的每个手术。每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。如学生实体可由学号

数据对象的映射关系

落爺英雄遲暮 提交于 2020-03-23 23:07:24
上图是一个以用户信息为中心的实体关系图,关系说明如下: 一个用户可拥有一个可选的用户扩展信息(1 - 0) 一个用户扩展信息拥有一个必需的所属用户信息(0 - 1) 一个用户扩展信息拥有一个用户地址信息(复合类型) 一个用户可对应多个登录日志信息(1 - N) 一个登录日志拥有一个必需的所属用户信息(N- 1) 一个用户可以拥有多个角色(N - N) 一个角色可以分配给多个用户(N - N) 下面来依依看一下这几种数据表的关系 第一种:0:1。举例说明:有一个数据表Emplyee代表该公司的员工表,而该公司里的员工有一个通讯账号数据库表MessagingAccount,而有些员工不使用,也就是没有通讯账号。这就说明员工Employee和MessagingAccount之间的关系就是一个员工对应一个通讯账号,或者一个员工没有通讯账号。 WithOptional:将关系配置为required:optional。(required:0…1端的1,表示必需,不可为null;optional:0…1端的0,表示可选,可为null。下同) 第二种:1:1.举例说明:还是第一种的例子中每个员工都有一个通讯账号的话。 WithRequiredDependent:将关系配置为required:required。要配置的实体类型将成为依赖对象,且包含主体的外键。作为关系目标的实体类型将成为关系中的主体

EF配置模型

强颜欢笑 提交于 2020-03-23 23:07:08
配置方法 EF里面的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面,还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置。 Data Annotations翻译过来就是数据注解,是通过直接在实体类的属性上加注类似标签的东西达到对数据库的映射; 特记录下使用FluentAPI方式: 要使用Fluent API 就必须在你自定义的继承自DbContext的类中重载OnModelCreating这个方法 1.ToTable - TableAttribute:配置此实体类型映射到的表名 2.HasColumnName - ColumnAttribute:配置用于存储属性的数据库列的名称 3.HasForeignKey - ForeignKeyAttribute:将关系配置为使用在对象模型中的外键属性。如果未在对象模型中公开外键属性,则使用Map方法 4.Ignore - NotMappedAttribute:从模型中排队某个属性,使该属性不会映射到数据库 5.HasRequired:通过此实体类型配置必需关系。除非指定此关系,否则实体类型的实例将无法保存到数据库。数据库中的外键不可为null。 6.HasOptional:从此实体类型配置可选关系

EF Code First:实体映射

百般思念 提交于 2020-03-23 23:06:45
二、实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。DataAnnotation由命名空间System.ComponentModel.DataAnnotations提供。下面列举实体模型中常用的DataAnnotation特性: KeyAttribute:对应数据库中的主键 RequiredAttribute:对应数据库中字段的数据是否可以为null MaxLengthAttribute:对应数据库中字符串类型字段的最大长度 MinLengthAttribute:在数据库中无对应,但在代码中字符串最小长度 ConcurrencyCheckAttribute:指定用于开放式并发检查的列的数据类型 TimestampAttribute:将列的数据类型指定为行版本 System.ComponentModel.DataAnnotations命名空间中只定义了部分实体验证的特性,在EntityFramework程序集中定义了更多的数据映射特性: DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成的,并指定生成策略(None数据库不生成值,Identity当插入行时

Hibernate映射一对多双向关联关系及部门关联属性

元气小坏坏 提交于 2020-03-23 13:02:15
一对多双向关联关系:(Dept/Emp的案例)        既可以根据在查找部门时根据部门去找该部门下的所有员工,又能在检索员工时获取某个员工所属的部门。 步骤如下:   1.构建实体类(部门实体类加set员工集合)   2. 准备持久化类的映射文件 ( 部门配置中,植入一对多配置 )   3.构建大配置,关联小配置   4.构建测试类 1.构建实体类(部门类)   使用Set集合可以使保存的内容不重复。 员工类: 2. 准备持久化类的映射文件  Dept小配置: <set> 元素的 name 属性: 设定持久化类的属性名。此处为 Dept 类的 emps 属性。 <set> 元素还包含两个子元素: 《1》.<key> 元素: column 属性设定与所关联的持久化类对应的表的外键。 《2》.<one-to-many> 元素: class 属性设定与所关联的持久化类。 Emp小配置: 3.构建大配置,关联小配置(关键代码) 4.构建测试类: cascade 属性 none:当Session操纵当前对象时,忽略其他关联的对象。它是cascade属性的默认值. Save-update:当通过Session的save()、update()及saveOrUpdate()方法来保存或更新当前对象时,级联保存所有关联的新建的瞬时状态的对象,并且级联更新所有关联的游离状态的对象。 Delete

Hibernate实现有两种配置,xml配置与注释配置

一曲冷凌霜 提交于 2020-03-23 11:33:08
hibernate 实现有两种配置, xml 配置与注释配置。 ( 1 ): xml 配置: hibernate.cfg.xml (放到 src 目录下)和实体配置类 :xxx.hbm.xml (与实体为同一目录中) <? xml version = '1.0' encoding = 'utf-8' ?> <! DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" > < hibernate-configuration > < session-factory > <!-- Database connection settings --> < property name = "connection.driver_class" > com.mysql.jdbc.Driver </ property > < property name = "connection.url" > jdbc:mysql://localhost:3306/hxj </ property > < property name = "connection

Error instantiating class com.liwen.mybatis.bean.Employee with invalid types () or values ().

末鹿安然 提交于 2020-03-22 18:25:50
实体类默认构造方法是无参构造方法,一旦重写构造方法,默认方法就会变成重写之后的构造方法,所以该错误报的错就是实体类缺少无参构造方法 来源: https://www.cnblogs.com/wenwenlee/p/12547192.html

Mybatis(二) Mybatis通用的写法

落花浮王杯 提交于 2020-03-22 16:55:26
2.1 用来循环容器的标签forEach,查看例子   foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用语where语句中,表示以什么开始,比如以'('开始 separator:表示在每次进行迭代时的分隔符, close 常用语where语句中,表示以什么结束,   在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况: 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list . 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array . 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.   针对最后一条,我们来看一下官方说法: 注意 你可以将一个 List 实例或者数组作为参数对象传给

EasyExcel导入工具(SpringMVC下使用)

回眸只為那壹抹淺笑 提交于 2020-03-22 09:22:20
easyExcel:由阿里巴巴公司开发,由github托管 github上有详细使用文档 github地址:https://github.com/alibaba/easyexcel/blob/master/quickstart.md 导入 1、模型类:可以是实体类 主要是 @ExcelProperty注解 value:对应字段 index:对应导入模板是第几列(从0开始) @ExcelProperty(value = "name", index = 0) 推荐使用有模型,因为导入模板如果有变化,index可以随时改变 2、Controller接收导入文件 //批量导入(有模型) @RequestMapping("batchImport") public ModelAndView batchImport(@RequestParam(value = "file", required=true)MultipartFile file) { ModelAndView mv=new ModelAndView(); mv.setView(Jackson2Util.jsonView()); InputStream in = null; try { in = file.getInputStream(); // 解析每行结果在listener中处理 AnalysisEventListener