Fork me on GitHub

SpringBoot集成JPA

什么jpa

Java Persistence API:用于对象持久化的 API

Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层

JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。

 

集成jpa实现对图书的查询小案例

springboot采用2.0.0版本

1.导入相关依赖

 1 <!--web应用-->
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-web</artifactId>
 5         </dependency>
 6 
 7         <!--测试-->
 8         <dependency>
 9             <groupId>org.springframework.boot</groupId>
10             <artifactId>spring-boot-starter-test</artifactId>
11             <scope>test</scope>
12         </dependency>
13 
14         <!--freemarker支持-->
15         <dependency>
16             <groupId>org.springframework.boot</groupId>
17             <artifactId>spring-boot-starter-freemarker</artifactId>
18         </dependency>
19 
20         <!-- mysql驱动 -->
21         <dependency>
22             <groupId>mysql</groupId>
23             <artifactId>mysql-connector-java</artifactId>
24         </dependency>
25 
26         <!--整合jpa-->
27         <dependency>
28             <groupId>org.springframework.boot</groupId>
29             <artifactId>spring-boot-starter-data-jpa</artifactId>
30         </dependency>

2.application.properties

1 spring.datasource.url=jdbc:mysql://localhost:3306/bookshop
2 spring.datasource.username=root
3 spring.datasource.password=123
4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.entity层

 1 @Entity(name = "book")
 2 @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
 3 public class Book {
 4     @Id
 5     @GeneratedValue
 6     private Integer bookid;
 7     @Column
 8     private String bookname;
 9     @Column
10     private Integer bookprice;
11 
12    get  set方法省略。。
13 }

 

4.dao层 继承JpaRepository

1 public interface IBookDAO extends JpaRepository<Book,Integer> {
2 }

 

5.controller层

 1 @Controller
 2 public class BookController {
 3     @Autowired
 4     private IBookDAO bookDAO;
 5 
 6     @RequestMapping("/getBookById")
 7     @ResponseBody
 8     public Book getJpaBookById(Integer bookid) {
 9         return bookDAO.getOne(bookid);
10     }
11 }

 

6.启动项目

 

错误解析:

1.需在controller层的查询方法上加上@ResponseBody注解,解析成json格式  加完之后还是报错。。。

 在实体类上加入@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})     在网上查询作用是忽略一些属性转为json格式

 

到此集成jpa结束。。。。

 

posted @ 2018-04-06 10:18  L波涛  阅读(805)  评论(0编辑  收藏  举报