码迷,mamicode.com
首页 > 其他好文 > 详细

JPA

时间:2021-03-11 11:42:48      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:upd   att   生成   none   依赖   配置   boot   int   集成   

JPA

JPA依赖

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

application.yml配置数据库连接和JPA连接

spring:
application:
name: text-service
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
#数据库类型
database: mysql
#日志打印sql,默认false
show-sql: true
hibernate:
ddl-auto: update

其中,spring.jpa.hibernate.ddl-auto 参数用来配置是否开启自动更新数据库表结构,可取create、create-drop、update、validate、none五个值。

create 每次加载hibernate时,先删除已存在的数据库表结构再重新生成;
create-drop 每次加载hibernate时,先删除已存在的数据库表结构再重新生成,并且当 sessionFactory关闭时自动删除生成的数据库表结构;
update 只在第一次加载hibernate时自动生成数据库表结构,以后再次加载hibernate时根据model类自动更新表结构;
validate 每次加载hibernate时,验证数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
none 关闭自动更新

实体类

@Data
@Entity
@Table(name = "jpa_book")
public class JpaBook implements Serializable {
private static final long serialVersionUID = -2717907879164821407L;
@Id
private int id;

private String author;

private String bookPages;

private String bookName;
}

@Data为lomk插件提供,可以自动生成get/set,toString,hasHash,equals方法

@Entity标记该实体类是一个JPA实体类

@Table 表示实体类与数据库表的映射 name = 表名

@Id 主键

@GeneratedValue(strategy = GenerationType.IDENTITY)主键自动增长

接口

@Repository
public interface JpaBookRepository extends JpaRepository<JpaBook,Integer> {
/**
* JPA默认的方法
* @param author
* @return
*/
List<JpaBook> findAllByAuthor(String author);

/**
* nativeQuery=true 原生sql
* @param id
* @return
*/
@Query(value = "select * from jpa_book where id = ?1" , nativeQuery=true)
List<JpaBook> queryBookById(Integer id);

/**
* nativeQuery = false
* @param id
* @return
*/
@Query(value = "select a from JpaBook as a where a.id = ?1")
List<JpaBook> queryBookByIdNoNative(Integer id);
}

JpaRepository<T,E>分别是实体类和主键的类型

1.可以直接通过JPA提供的方法直接拼接

2.使用注解

依赖报错

An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor.getValidationMode

项目启动时报了错误,是JPA相关的

百度得出解决方案,依赖冲突,项目集成了通用mapper,所以排除tk.mapper中的依赖后恢复正常

<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
<exclusions>
<exclusion>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
</exclusion>
</exclusions>
</dependency>

JPA

标签:upd   att   生成   none   依赖   配置   boot   int   集成   

原文地址:https://www.cnblogs.com/xzh-hash/p/14511541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!