Spring boot jpa配置,及错误记录

学习spring boot遇到的坑记录一下。
一、Spring boot jpa配置
1.首先建立一个空的maven工程,可以先把web加上。方便测试。
2.添加maven依赖关系:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

3.配置核心文件application.properties:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=041688

# JPA 相关配置
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

4.创建实体以及数据访问接口:
@@Entity 下面可加@Table(name = “AUTH_USER”)指明表名,不加的话表面同类名。

@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", nullable = true, length = 200)
    private String name;

    @Column(name = "author", nullable = true, length = 200)
    private String author;

    public Book() {
    }

    public Long getId() {
        return id;
    }

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

数据访问接口:

package com.prince.demo.Entity;

import org.springframework.data.jpa.repository.JpaRepository;

public interface BookRepository extends JpaRepository<Book, Long> {
}

5.rest接口以供测试使用

@RestController()
@RequestMapping("/api/v1")
public class BookAPP {
    @Autowired
    private BookRepository bookRepository;

    @PostMapping(path = "addPerson")
    public void addPerson(Book person) {
        bookRepository.save(person);
    }

    @DeleteMapping(path = "deletePerson")
    public void deletePerson(Long id) {
        bookRepository.deleteById(id);
    }

}

6.启动项目会在database中自动建立表。
用postman测试:插入两条数据。
在这里插入图片描述
在这里插入图片描述
二、错误记录
1、修改数据库的权限错误,具体报错access denied for user ‘root’@‘localhost’(using password:YES)。应对方法:
grant all privileges on . to root@’%’ identified by ‘******’ //***表示数据库连接密码
这个是赋予以root开头的用户所有的权限

2、报 java.sql.SQLException: Unknown system variable ‘tx_isolation’
解决办法:数据库的版本太高 因此将mysql-connector-java升级到最新版本就解决了问题.

3、IDEA maven更新依赖失败。改了版本maven不更新jar包。
解决办法:重启IDEA。也有说删除本地maven库可以的没试。

4、springBoot+jpa 测试自增时数据库报错Springboot-jpa Table ‘sell.hibernate_sequence’ doesn’t exist
解决办法: 在@GeneratedValue中添加strategy = GenerationType.IDENTITY

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

5、hibernate生成数据表时报错,类似下面报错:
create table NEWS (ID integer not null auto_increment, TITLE varchar(255), AUTHOR varchar(255), DATE datetime, primary key (ID)) type=MyISAM

原因: MySQL的版本跟当前方言配置属性不一致
解决方法:
spring.jpa.database-platform=oorg.hibernate.dialect.MySQLDialect 改成下面的即可。
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
在 SrpingBoot 2.0 版本中,Hibernate 创建数据表的时候,默认的数据库存储引擎选择的是 MyISAM (之前好像是 InnoDB,这点比较诡异)。这个参数是在建表的时候,将默认的存储引擎切换为 InnoDB 用的。
也有反过来的,不知道为什么。https://blog.csdn.net/qq_34488760/article/details/54985913

Spring Boot 中使用 JPA 配置自动维护表结构,需要进行以下步骤: 1. 在 `application.properties` 文件中配置数据源信息: ``` spring.datasource.url=jdbc:mysql://localhost:3306/testdb spring.datasource.username=root spring.datasource.password=123456 ``` 2. 在 `pom.xml` 文件中添加 JPA 和 MySQL 驱动的依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` 3. 创建实体类,并使用注解描述实体类和字段的属性: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; // 省略 getter 和 setter 方法 } ``` 4. 创建 JPA Repository 接口,并继承 `JpaRepository` 接口: ```java public interface UserRepository extends JpaRepository<User, Long> { } ``` 5. 在 `application.properties` 文件中添加 JPA 相关的配置: ``` # 自动建表 spring.jpa.hibernate.ddl-auto=create # 显示 SQL 语句 spring.jpa.show-sql=true # 数据库方言 spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect ``` 6. 启动应用程序,JPA 会自动根据实体类和配置文件的信息生成数据库表结构。如果需要更新表结构,可以将 `spring.jpa.hibernate.ddl-auto` 的值改为 `update`。 以上就是使用 Spring BootJPA 配置自动维护表结构的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值