SpringBoot根据类的属性生成表

本文详细介绍了SpringBoot中application.properties的配置方法,包括修改启动端口、部署路径、数据库连接参数及JPA设置。通过具体实例,展示了如何配置MySQL数据库连接,并提供了实体类的示例代码。

application.properties配置

#修改tomcat的启动端口
server.port=8080

#修改项目的部署路径
server.servlet.context-path=/a


#server.context-path=/XXXXX   格式报错
#因为spring boot版本问题导致的!!现在用的比较新的版本在2.0以上!以前是1.0-2.0之间的.server.context-path=/XXXXX
#
#把原来server.context-path=/XXXXX
#
#改成server.servlet.context-path=/XXXXX

#=========mysql,useUnicode=true&characterEncoding=utf-8 编码格式==========#
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/fdk?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


#js配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

在要生成对应表的类上面,添加注解


@Entity(name="users")
public class Users {

    @Id   //数据库的主键
    @Column(name="id") //重名数据库的列名
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;


    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

启动项目就可以了

注:启动项目的时候,报错,试了各种方法,最后删除pom.xml文件,在添加进去就行了…-_-||

### Spring Boot JPA不自动生成数据库的原因及解决方案 #### 可能原因分析 Spring Boot JPA未自动创建数据库的主要原因是配置文件中的设置不当或者依赖项缺失。以下是可能的具体原因: 1. **`application.properties` 或 `application.yml` 配置错误** 如果缺少必要的 Hibernate 属性配置,例如 `spring.jpa.hibernate.ddl-auto` 的值未正确设置,则可能导致无法生成结构[^1]。 2. **实体类定义问题** 实体类未被正确定义或标注,例如缺少 `@Entity` 注解、未指定主键生成策略 (`@Id`, `@GeneratedValue`) 等都会影响生成[^2]。 3. **数据源配置错误** 数据库连接未能正常建立,可能是由于 URL、用户名或密码配置有误,导致 Hibernate 无法访问目标数据库并执行 DDL 操作[^3]。 4. **依赖版本冲突** 若项目的 Maven 或 Gradle 文件中存在多个不同版本的 JPA/Hibernate/Spring Data 依赖,可能会引发兼容性问题,从而阻止的自动生成[^4]。 --- #### 解决方案 ##### 1. 检查 `application.properties` 中的相关属性 确保以下关键属性已正确配置: ```properties # 设置Hibernate行为模式为update/create/validate等 spring.jpa.hibernate.ddl-auto=update # 显示SQL语句以便调试 spring.jpa.show-sql=true # 自动扫描实体包路径 spring.data.jpa.repositories.bootstrap-mode=default ``` 其中,`ddl-auto` 参数的不同取值含义如下: - `none`: 不进行任何DDL操作。 - `create`: 每次启动时重新创建(会删除已有数据)。 - `update`: 更新现有结构而不丢失数据。 - `create-drop`: 启动时创建,在应用关闭时删除。 - `validate`: 验证当前模型与数据库的一致性,但不会修改结构。 ##### 2. 完善实体类定义 确认所有的实体类都遵循了标准的 JPA 规范,例如: ```java import javax.persistence.*; @Entity @Table(name = "users") // 名映射 public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 主键生成策略 private Long id; @Column(nullable = false, length = 50) private String name; public User() {} // Getters and Setters... } ``` 注意:如果使用 Lombok 插件简化代码开发,请确保其插件安装无误,并在实体类中标注相应的注解 (如 `@Data`, `@NoArgsConstructor`)。 ##### 3. 校验数据源配置 检查 `application.properties` 是否包含了完整的 JDBC 连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 同时验证 MySQL/MariaDB 用户权限是否允许创建新以及写入数据。 ##### 4. 排除依赖冲突 打开 IDE 提供的 Dependency Hierarchy 工具查看是否存在重复引入的 JPA 和 Hibernate 版本。必要时强制锁定特定版本号,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 手动指定所需版本 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.3.Final</version> </dependency> ``` --- ### 总结 通过调整 `application.properties` 中的关键参数、完善实体类设计、校准数据源链接字符串以及清理潜在的依赖冲突,可以有效解决 Spring Boot JPA 不 自动生成数据库的问题。若仍存在问题,建议启用日志记录功能进一步排查异常堆栈信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值