SpringBoot 八 创建实体类Entity

本文介绍了在SpringBoot项目中如何创建实体类Entity,通常将实体类放在domain包下。通过@Entity和@Table注解声明实体类及对应数据库表,使用@Id和@GeneratedValue设置主键。此外,还详细说明了不同字段类型的@Column注解用法和主键生成策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

src/main/java :主程序入口Application,可以通过直接运行该类来启动 Spring Boot 应用。
*

1创建时需要在com.example.demo项目下新建一个 domain 包 一般用来存放实体类

然后在该包下 新建实体类Company.class
*
在这里插入图片描述
知识点
1)@开头表示注解 但IDEA约定大于配置 所以也相当于声明(应该是这样)
// @Entity 声明这是一个实体类
//@Table(name = “company”) 表示要创建的表 叫company 一般与类名保持一致 IDEA 就会自动在mariaDB 里面进行配置 创建一个叫mariaDB的表
//因为已经再配置文件yml里面 配置好了 jap和 数据库(数据源)(类型是update 所以 在实体类中再次加入字段 跑一次之后 数据库也会跟新 但如果在实体类里面加了之后 再从
// 实体类中删掉 并不会把这个字段再删掉) 所以他会自动生成数据表

/**

  • 公司实体类
    */
    @Entity
    @Table(name = “company”)

// @Entity 声明这是一个实体类
//@Table(name = “company”) 表示要创建的表 叫company 一般与类名保持一致 IDEA 就会自动在mariaDB 里面进行配置
//因为已经再配置文件yml里面 配置好了 数据库对应 和 类型(类型是update 所以 在实体类中再次加入字段 跑一次之后 数据库也会跟新 但如果在实体类里面加了之后 再从
// 实体类中删掉 并不会把这个字段再删掉) 所以他会自动生成数据表
// 导入包快捷键 alt+ Enter
public class Company {
@Id
// @Id 注解 表明此字段 为主键
@GeneratedValue(generator = “myuuid”)
// 这个是JPA的主键生成器注解 下面这个是hibernate 的主键生成器注解 因为Jpa并没有uuid主键生成策略 而Hibernate是Jpa的扩展
// 里面有丰富的主键生成策略 所以可以用Hibernate
@GenericGenerator(name = “myuuid”, strategy = “uuid”)
// myuuid 前后两个一定要保持一致 至于名字是什么 都无所谓 只要一致就可以 后面的uuid 必须得是uuid 表示是uuid主键类型
// uuid采用128位uuid算法生成主键 被编码为一个32位16进制数字的字符串 占用空间大(字符串类型)
// 也可以用identity 自增主键 虽然不能用到Oracle中,但MySQL和SQLServer 中很常用
@Column(length = 32)
// 表示下面的属性字段 和数据库字段一一对应
private String uuid;
// 如果只是单纯的 private String uuid 数据库表中 并不会出现与之一一对应的字段

@Column(length = 60)
private String comname;
@Column(name = “aa”,length = 120)
private String comaddress;
// 实体里面的属性是comaddress 对应到表里的字段名称 是aa 一般通用的做法是 不再单独命名字段的名称
@Column(length = 30)
private String comurl;
@Column(length = 30)
private String comtelephone;
@Column(columnDefinition = “char(7)”)
// 万能定义语句 直接按数据库里面定义类型输入即可

private String establishdate;
@Column
// 整型直接不用指定长度 直接注解跟数据库字段一一对应即可
private int employeenumber;
@Column(columnDefinition = “float(20,4) default’0.0000’”)
// 万能定义语句 直接按数据库里面定义类型输入即可 后面的是默认值这个必须得输入 因为浮点型 没有默认值报错

private float totaloutput;
@Column(columnDefinition = “text”)
private String comdesc;
@Column(columnDefinition = “char(4)”)
private String comstatus;
@Column(length = 20)
private String contactname;
@Column(columnDefinition = “char(11)”)
private String contactmobile;
@Column(length = 30)
private String contactemail;

//
IDENTITY自增列主键
// @Id
// // @Id 注解 表明此字段 为主键
// @GeneratedValue(strategy = GenerationType.IDENTITY)
用JPA生成器 标明主键类型是IDENTITY 因为IDENTITY 再Jpa里面就有 所以不用再调用Hibernate扩展
// @Column
表示下面的属性字段 和数据库字段一一对应 IDENTITY主键类型 int类型 直接表名即可 因为整型只有是三十二位的整型
// private int uuid

//  因为是实体类 所以还需要一件生成 get set 方法

// 右键 generate -》 set get … -》 然后 全部选中 点击生成
public String getUuid() {
return uuid;
}

public void setUuid(String uuid) {
    this.uuid = uuid;
}

public String getComname() {
    return comname;
}

public void setComname(String comname) {
    this.comname = comname;
}

public String getComaddress() {
    return comaddress;
}

public void setComaddress(String comaddress) {
    this.comaddress = comaddress;
}

public String getComurl() {
    return comurl;
}

public void setComurl(String comurl) {
    this.comurl = comurl;
}

public String getComtelephone() {
    return comtelephone;
}

public void setComtelephone(String comtelephone) {
    this.comtelephone = comtelephone;
}

public String getEstablishdate() {
    return establishdate;
}

public void setEstablishdate(String establishdate) {
    this.establishdate = establishdate;
}

public int getEmployeenumber() {
    return employeenumber;
}

public void setEmployeenumber(int employeenumber) {
    this.employeenumber = employeenumber;
}

public float getTotaloutput() {
    return totaloutput;
}

public void setTotaloutput(float totaloutput) {
    this.totaloutput = totaloutput;
}

public String getComdesc() {
    return comdesc;
}

public void setComdesc(String comdesc) {
    this.comdesc = comdesc;
}

public String getComstatus() {
    return comstatus;
}

public void setComstatus(String comstatus) {
    this.comstatus = comstatus;
}

public String getContactname() {
    return contactname;
}

public void setContactname(String contactname) {
    this.contactname = contactname;
}

public String getContactmobile() {
    return contactmobile;
}

public void setContactmobile(String contactmobile) {
    this.contactmobile = contactmobile;
}

public String getContactemail() {
    return contactemail;
}

public void setContactemail(String contactemail) {
    this.contactemail = contactemail;
}

}

### 使用 Spring Boot 创建数据库表 在 Spring Boot 中创建数据库表可以通过多种方式实现,其中一种常见的方式是利用 `Spring Data JPA` 和 Hibernate 来自动生成或更新数据库结构。 #### 配置数据源和 JPA 设置 为了使应用程序能够访问并操作 MySQL 数据库,需先配置好相应的属性。这通常是在项目的全局配置文件 `application.properties` 或者 `application.yml` 文件中完成的: 对于 `.properties` 文件而言,设置如下所示[^2]: ```properties spring.datasource.username=root spring.datasource.password=0123 spring.datasource.url=jdbc:mysql://localhost:3306/springbootintegjdbc?createDatabaseIfNotExist=true&characterEncoding=utf8mb4&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 启用Hibernate DDL机制来自动生成/更新模式 spring.jpa.hibernate.ddl-auto=update # 显示执行SQL语句日志以便调试 spring.jpa.show-sql=true ``` 上述配置中的 `spring.datasource.url` 参数包含了特殊的查询参数来确保如果指定名称的数据库不存在,则会自动创建它[^3];而 `spring.jpa.hibernate.ddl-auto=update` 则指示 Hibernate 根据实体类定义的变化去同步修改现有的数据库架构。 #### 定义实体类 接下来要做的就是在项目里编写 Java 类表示想要存储的数据模型——即所谓的“实体”。这些实体应该被标注上合适的注解以映射到关系型数据库里的表格字段。下面是一个简单的例子说明怎样声明一个名为 `User` 的实体对象[^4]: ```java import javax.persistence.*; @Entity // 表明这是一个持久化实体 @Table(name = "users") // 可选,用于显式指定期望使用的表名 public class User { @Id // 主键标识符 @GeneratedValue(strategy = GenerationType.IDENTITY) // 自动生成ID策略 private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; // Getters and Setters... } ``` 当应用启动时,只要开启了 `ddl-auto=update` 功能,并且该实体对应的表尚未存在于目标数据库之中,那么就会依据此实体描述的信息新建一张表出来。 通过以上步骤就可以轻松地让 Spring Boot 应用程序基于给定的实体类自动构建所需的数据库表结构了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值