ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.3 整合Spring Data JPA

2022-07-11 00:01:36  阅读:182  来源: 互联网

标签:5.3 String author JPA Spring book id name


JPA CJava Persistence APD 和Spring Data 是两个范畴的概念。

Hibernate 是一个ORM 框架,而JPA 则是一种ORM 规范。而Hibernate 是这些规范的实现(事实上, 是先有Hibernate 后有JPA, JPA 规范的起草者也是Hibernate 的作者) , 因此从功能上来说, JPA 相当于H ibernate 的一个子集。

 

创建数据库, 不用创建表。

添加Spring Data JP A 的依赖

<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>

在application .properties 中配置数据库基本信息以及JPA 相关配置

创建Book 实体类

@Entity (name = "t_book")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name ="book_name", nullable = false)
    private String name;

    private String author;

    private Float price;

    @Transient
    private String description;
    
    // getter/setter
}

代码解释:
• @Entity, 在项目启动时会根据该类自动生成一张表,表的名称是@Entity 注解中name 的值,如果不配置name ,默认表名为类名。
• 所有的实体类都要有主键,@Id 表示该属性是一个主键, @GeneratedValue 表示主键自动生成, strategy 则表示主键的生成策略。
• 默认情况下,生成的表中字段的名称就是实体类中属性的名称, 通过@Column 注解可以定制生成的字段的属性, name表示该属性对应的数据表中字段的名称, nullable 表示该字段非空。
• @Transient 注解表示在生成数据库中的表时,该属性被忽略,即不生成对应的字段。

 

创建BookDao 接口,继承JpaRepository

public interface BookDao extends JpaReposi tory<Book , Integer> {
  List<Book> getBooksByAuthorStartingWith(String author);
  List<Book> getBooksByPriceGreaterThan(Float price);
  @Query(value = "select * from t_book where id=(select max(id) from t book)", nativeQuery = true)   Book getMaxIdBook();
  @Query("select b from t_book b where b.id>:id and b.author=:author")   List<Book> getBookByidAndAuthor(@Param("author") String author, @Param("id") Integer id);
  @Query("select b from t_book b where b.id<?2 and b.name like %?l%")   List<Book> getBooksByidAndName(String name, Integer id); }

 

 

 

 

标签:5.3,String,author,JPA,Spring,book,id,name
来源: https://www.cnblogs.com/ShengLiu/p/16464459.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有