首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    01-EF Core笔记之创建模型

    FluentAPI方式配置的代码如下: modelBuilder.Entity() .HasKey(c=>c.Id) //主键 .HasAlternateKey(c =>...=> new { c.State, c.LicensePlate }); //组合备用键 必填和选填 映射到数据库的必填和可空,在约定情况下,CLR中可为null的属性将被映射为数据库可空字段...,不能为null的属性映射为数据库的必填字段。...注意:如果CLR中属性不能为null,则无论如何配置都将为必填。 也就是说,如果能为null,则默认都是可空字段,因此在配置时,只需要配置是否为必填即可。...() .Property("LastUpdated"); 阴影属性 阴影属性指的是在实体中未定义的属性,而在EF Core中模型中为该实体类型定义的属性,这些类型只能通过变更跟踪器进行维护

    3.1K20

    JPA实体类中的注解

    默认加载为立即加载 *ToMany 默认加载方式为懒加载 @Entity @Entity标记在类名上面,作为实体类的标识 @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table...@Id @Id设置对象表示符,标识的实体类的属性映射对应表中的主键 @GeneratedValue 设置标识符的生成策略,常与@Id一起使用  参数:strategy指定具体的生成策略  方式一:@...通常ORM框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是DATE,TIME还是TIMESTAMP。...此外,String的默认映射类型为VARCHAR,如果要将String类型映射到特定数据库的BLOB或TEXT字段类型,该属性非常有用。 @OrderBy 在加载数据的时候可以为其指定顺序。...例如,实体Order有一个user属性来关联实体User,则Order的user属性为一个外键,  其默认的名称为实体User的名称+下划线+实体User的主键名称  @JoinTable(name =

    3.9K70

    JPA 注解学习

    属性对应field类别,方法的 getXxx()对应property类别。 @Entity 声明一个类为实体Bean。 @Table 说明此实体类映射的表名,目录,schema的名字。...• 其中一个实体通过外键关联到另一个实体的主键。注:一对一,则外键必须为唯一约束。...上例为 passport_id, 因为Customer 中关联属性为 passport, Passport 的主键为 id. • 通过关联表来保存两个实体之间的关联关系。...列名为:主题的关联属性名 + 下划线 + 被关联端的主键列名。本例中为company_id,因为关联的属性是company, Company的主键为 id....用 cascading 实现传播持久化(Transitive persistence) cascade 属性接受值为 CascadeType 数组,其类型如下: • CascadeType.PERSIST

    2.9K10

    SpringDataJPA笔记(1)-基础概念和注解

    @Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。...里的@Column设置都将不起作用 JPA规范中对@Lob注解并没有说明不能同时标注@Column注解,但是在实际使用中Hibernate JPA不支持这中标注方式 @Id @Id 标注用于声明一个实体类的属性映射为数据库的主键列...生成器可以在类、方法或者属性上定义 生成器是为多个实体类提供连续的ID值的表,每一行为一个类提供ID值,ID值通常是整数 元数据属性说明: name:生成器的唯一名字,可以被Id元数据使用。...@Column 标注的 columnDefinition 属性: 表示该字段在数据库中的实际类型.通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是...如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic @Temporal 在核心的 Java API 中并没有定义 Date 类型的精度(temporal

    4K20

    Hibernate 注解配置

    getter方法上面,请看示例3.7,将Category类的name属性(版块分类名称)映射到了“name”列,并声明该属性为非空、不可编辑、唯一的,限制长度为200: ​示例3.7​ @Column(...因为我们在声明getBoards()方法的返回的类型时为Set指定了泛型信息,即Set。Hibernate通过反射获取返回类型的泛型信息便知关联关系类型了。...从异常信息可以看出我们有两个选择,一是为集合指定泛型信息,另一个是通过@OneToMany的targetEntity属性指定关联实体类型,我们需要二选其一。...1.1.2 单向多对一关联 @ManyToOne注解用来配置多对一关系,该注解除了共有属性外还拥有一个叫做optional的配置选项,设置为true时,即使外键为空仍可以向表中添加数据。...请看示例3.13,我们将Category类的boards属性和其getter/settter方法去掉,将Board类的categoryId属性和getter/settter方法换成Category类型的属性

    8410

    Hibernate注解之基本注解的注解使用

    类级别注解 @Entity : 映射实体类,其中有一个name属性指定当前实体类映射的表的名称 name: 可选属性 ,指定对应表的名称,如果没有指定name属性,那么创建表的名称和类名一样 @...@Id 映射生成主键 @Version 定义乐观锁 @Column 映射表的列 @Transient 定义暂态属性 主键相关的注解 @id: 指定该属性为主键...通常ORM框架可以根 据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据 库中字段类型究竟是 DATE,TIME还是 TIMESTAMP....此外 ,String 的默认映射类型为VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB或 TEXT字段类型,该属性非常有用。...,但是我们也可以使用这个注解改变这个名称 这个注解是用来设置自动生成的外键的属性,比如外键的名称,非空…… name 指定外键的名称 nullable 指定外键是否为空,默认的是true

    2K10

    Entity Framework 4.1 Code-First 学习笔记

    例如,对于 Order 来说,他的属性 OrderID 必须是主键,其它的约定将用来推断列名和列的类型,默认数据库中的列名是属性名,使用 string 类型来影射数据库中的 nvarchar(128),...如果属性的类型是可空的,那么,影射到数据库中的允许 NULL 等等。...,且为自增;OrderTitle为不能为空且最大长度为32,最小长度为2,尽管我们如此规定,但最小长度是不会被映射到数据表中的,这一点可以理解,最小长度会在数据存储时进行验证,如果小于2将会抛出异常,无法完成保存...这就是为什么需要标记你的子实体集合属性为 virtual 的原因。...即使复杂类型的所有属性都是可空的,你也不能将整个复杂类型的对象设为 null, 例如,在这种情况下,即使街道的名称和街道的号码不是必填的,也不能有一个住宅的地址为 null,需要创建一个所有属性都是 null

    1.6K10

    EntityFramework Core 学习扫盲

    虽然我们目前还没有添加任何约束,但是EF Core会自动地根据Id/XXId的命名方式生成自增主键,而且如果没有在实体上增加[Table]Attribute的话,表的命名也是根据属性命名而定。...主键 默认情况下,EF CORE会将实体中命名为Id或者[TypeName]Id的属性映射为数据库表中的主键。当然有些开发者不喜欢将主键命名为Id,EF CORE也提供了两种方式进行主键的相关设置。...生成值 前文中已经介绍过,假如属性被命名为Id/[TypeName]Id的形式,EF CORE会将该属性设置为主键。...进一步说,如果属性是整数或是Guid类型,那么该属性将会被EF CORE设置为自动生成。这是EF CORE的语法糖之一。 那由用户手动设置呢?...,这是因为EF CORE只支持部分类型的自动操作,详见Default Values。

    9.6K90

    【Note_01】通用 mapper

    建立实体类与数据库表之间的对应关系 默认类名首字母小写 @Column 实体类属性 建立实体类字段与数据库字段的对应关系 实体类:驼峰;数据库:_分隔 @Id 实体类属性 标识主键 未标识主键则认为该实体类为全字段联合主键...按全属性插入数据 * mapper自动生成的SQL entity = {username="admin",password="null",age=null} ⇩ 属性为空的插入 null insert...* 补充 ⇨ insertSelective(Entity entity)属性为空的使用默认值 4.3 updateByPrimaryKey(Entity entity) * 根据主键修改 * mapper...自动生成SQL ⇩ 属性为空的更新为 null update user set username = ?...* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为空的不更新【推荐】 4.4 delete(Entity entity) * 根据实体类删除 * mapper

    46700

    如何解决mybatis-plus调用update方法时,自动填充字段不生效问题

    即我们的实体对象,当实体对象为null时,则tableInfo 的值也是为null,这就会导致自动填充失效。...,只要tableInfo不为空,则就会进入自动填充逻辑,而tableInfo不为空的前提是更新或者插入的实体不是null对象,因此我们的思路就是在调用update方法时,要确保实体不为null 方案一:...实体更新时,直接使用update(Wrapper updateWrapper)的重载方法boolean update(T entity, Wrapper updateWrapper) 示例:...版本、3.3版本、3.4版本的自动填充的调用源码,其源码的实现各有不同,因为我github上的mybatis-plus引用的版本是3.1.2版本,因此就以3.1.2版本进行分析。...不过其他版本的分析思路大同小异,都是去跟踪什么地方调用了自动填充的逻辑。

    4.3K00

    如何解决mybatis-plus自动填充字段不生效问题

    即我们的实体对象,当实体对象为null时,则tableInfo 的值也是为null,这就会导致自动填充失效。...,得到的tableInfo是null,因而无法进入自动填充实现逻辑,因此导致填充自动失效 03如何解决update(updateWrapper),自动填充不生效问题 通过源码分析我们得知,只要tableInfo...不为空,则就会进入自动填充逻辑,而tableInfo不为空的前提是更新或者插入的实体不是null对象,因此我们的思路就是在调用update方法时,要确保实体不为null 方案一:实体更新时,直接使用update...版本、3.3版本、3.4版本的自动填充的调用源码,其源码的实现各有不同,因为我github上的mybatis-plus引用的版本是3.1.2版本,因此就以3.1.2版本进行分析。...不过其他版本的分析思路大同小异,都是去跟踪什么地方调用了自动填充的逻辑。

    2.5K20

    Spring data 相关注解

    ---- @MappedSuperclass 类注解 在进行实体类的封装时,id、状态、时间等,这些实体类重复的公共属性可以声明一个超类统一进行设置,加上@MappedSuperclass注解,然后实体类继承即可...@MappedSuperclass标识的类表示其不能映射到数据库表,因为其不是一个完整的实体类,但是它所拥有的属性能够隐射在其子类对用的数据库表中 @MappedSuperclass标识得嘞不能再有@Entity...//用于标记属性的主键 @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") //声明该属性与数据库字段的映射关系...@Entity //对实体注释。...2、 @Lob注释表示该属性持久化为Blob或者Clob类型,具体取决于属性的类型。 ---- @GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。

    2.1K20

    EF 约定介绍

    当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键 (2)、设计实体时,当一个实体包含一个集合属性...(Primary Key Convention) 当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键,如果类中的属性(Property)名称为 ID (不区分大小写...除了导航属性规定实体间的关系外,外键属性来式规定实体间方式的一种手段.Code First能够推断以下的命名属性为外键(优先级从上到下): (1)、导航属性名+关联实体的主键名 (2)、关联实体实体名+...关联实体的主键名 (3)、关联实体的主键名 注: (1)、当外键关系被检测到,Code First会根据外键的可空性来推断关系的具体形式;如果外键属性是可空的,那么关系会被设置为可选的,否则,关系就是必选的.... (2)、当关联实体的外键属性被设置为不为空,Code First会设置级联删除,反之不会。

    1.6K100

    实战:应用对持久数据访问| 从开发角度看应用架构9

    java对数据库表的操作,实际上是使用entity manager调用CRUD完成的。而entity manager之所以能对数据库做操作,是因为其底层调用Hibernate,封装了JDBC。...因为只能通过方法访问,可以说基于属性的访问提供了更好的封装。 通过注解getter方法提供基于属性的访问。 getter方法的返回类型决定了属性的类型。...事务类型定义了应用程序打算执行什么类型的事务。容器事务使用每个Java EE应用程序服务器中提供的Java事务API(JTA)。在JTA类型的事务中,容器负责创建和跟踪实体管理器。...将@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)注释添加到Person类的id属性中,使其成为主键,并将其生成为IDENTITY。...找到使用id的人的名字,将方法getPerson(Long id)添加到PersonService类。 在return语句中,使用实体管理器的find()方法根据id返回Person的name属性。

    1.6K30

    Hibernate关联关系

    ,如下:select * from husband h join wife w on h.wife_id=w.id; 妻子的主键作为丈夫的外键,那么这个是表中的关系,在实体类中的关系就是妻子的对象作为丈夫的实体类的属性...直接将丈夫对应的表的wifeId设置为其他或者为空即可 * * 下面我们使用的是设置丈夫对应的wifeId为空,那么就可以删除其对应的妻子的数据 */ @Test public void...要想实现双向外键关联,必须是两个实体类对象互为对方的成员属性 问题并解决 因为是双向关联,因此这里的要设置双向关联的主导对象(mappedBy),否则将会出现两张表的外键都是对方的主键,这显然是冗余的,...,在建立表的时候总是在Many的一方添加One的一方的外键 在单向外键关联中,如果通过One的一方获取Many的一方数据,那么需要在One的实体类中添加Many的实体类的对象为其成员变量,同时在这个成员变量的...如果想要通过Many的一方获取One的数据,那么需要在Many的实体类中添加One的实体类的对象为其成员变量,同时在这个成员变量的get方法上使用@ManyToOne这个注解 在双向外键关联,那么我们在使用

    6.3K30

    EF 相见恨晚的Attach方法

    ,默认状态是没有对任何对象跟踪的  2   实体状态:  在EF中对实体状会有4种状态:       2.1  Added:对象为新对象,并且已添加到对象上下文,但尚未调用    2.2  Deleted...在创建实体之后、但将其添加到对象上下文之前,该实体处于此状态   2.4 Modified:对象上的一个标量属性已更改,但尚未调用    2.5 Unchanged: 此对象尚未经过修改自对象附加到上下文中后...// 2 调用Savechange方法时生成一段Update的SQL语句且Where 条件 // 为对象的主键Id,因为EF更新和删除都是根据主键ID来处理的 删除操作也是一样的,这里就只贴用Attach...entity = new Product{Id =1} ctx.Attach(entity); ctx.ObjectStateManager.ChangeObjectState(entity...,EntityState.Deleted) ctx.SaveChange(); } } //前面说了EF是根据主键ID来处理的所以只要手动生成一个对象并把对应的ID赋值然后Attach

    1.4K40

    mysql学习笔记(四)约束与索引

    关系型数据库的设计规则:遵循ER模型和三范式 ER模型 E:Entity实体,指代数据库当中的一张表 R:Relationship,代表关系 ER图:https://jingyan.baidu.com/...实体完整性:同一个表中不能有相同的无法区分的数据 域完整性:数据的域有必要限定 参照完整性:所有的引用参照属性都在相应的表中能够找到 用户定义的完整性:符合用户定义的规则 根据约束的特点,分为以下几种:...主键约束分为单列主键约束和复合主键约束 单列主键约束为id int key; 复合主键约束为 create table dbtest( id int auto_increment, name varchar...Identity属性是指在创建Table时,为列指定的Identity属性,其语法是:column_name type IDENTITY [ (seed , increment) ],Identity属性有两个参数...七、非空约束(not null) 一个表可以有很多的非空约束 非空约束只能针对某一个字段来说 非空约束意味着该字段不能存入null alter table 数据库名.表名称 modify 字段名 数据类型

    2.1K00
    领券