当前位置:   article > 正文

Spring boot 中Hibernate 使用

spring boot hibernate 参数是?
spring.jpa.properties.hibernate.hbm2ddl.auto=
有四种配置方式,分别如下:

hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构。该参数的几种配置如下:

  • create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
  • create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
  • update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
  • validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

 

 

在上面配置中要注意的是“spring.jpa.hibernate.ddl-auto”这个属性,它有五个value值选着分别是:
1. none 永远以数据表字段为准,不做任何修改
2. validate 加载hibernate时,验证创建数据库表结构,会和数据库中的表进行比较,不会创建新表,但是会插入新值
3. create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因
4. create-drop 加载hibernate时创建,退出是删除表结构
5. update 加载hibernate自动更新数据库结构

 

一个Sample,第一张图看下目录结构

 

JPA依赖

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

重点看下Dao包下的BookResposibility,自带的API,都不需要具体写实现

  1. package com.example.demo.dao;
  2. import com.example.demo.entity.Book;
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4. import org.springframework.data.jpa.repository.Modifying;
  5. import org.springframework.data.jpa.repository.Query;
  6. import org.springframework.transaction.annotation.Transactional;
  7. import java.util.List;
  8. public interface BookRepository extends JpaRepository<Book, Long> {
  9. List<Book> findByAuthor(String author);
  10. List<Book> findAll();
  11. List<Book> findByName(String name);
  12. Book findById(long id);
  13. @Transactional
  14. @Modifying
  15. @Query("update Book set name = ?1 where id = ?2")
  16. int updateBookName(String name, long id);
  17. }

  

 

还有我的Controller文件,主要的新增,查询,查询列表,更新操作  CRUD

  1. package com.example.demo.controller;
  2. import com.example.demo.entity.Book;
  3. import com.example.demo.entity.BookPo;
  4. import com.example.demo.dao.BookRepository;
  5. import com.example.demo.response.ResVoid;
  6. import com.example.demo.response.Response;
  7. import io.swagger.annotations.ApiImplicitParam;
  8. import io.swagger.annotations.ApiOperation;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.web.bind.annotation.*;
  12. import java.text.SimpleDateFormat;
  13. import java.util.Date;
  14. import java.util.List;
  15. @RestController
  16. public class BookController {
  17. @Value("${uid}")
  18. String uid;
  19. @Autowired
  20. private BookRepository bookRepository;
  21. @ApiOperation(value = "新增书籍信息", notes = "新增书籍信息")
  22. @ApiImplicitParam(dataType = "BookPo", name = "bookpo", value = "新增书籍信息")
  23. @RequestMapping(value = "/save", method = RequestMethod.POST)
  24. public ResVoid save(@RequestBody BookPo bookpo) {
  25. Date dt = new Date();
  26. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
  27. String date = sdf.format(dt);
  28. String bookname = bookpo.getName();
  29. String bookauthor = bookpo.getAuthor();
  30. int booknumber = bookpo.getNumber();
  31. float bookprice = bookpo.getPrice();
  32. bookRepository.save(new Book(bookname, bookauthor, date, booknumber, bookprice, date, date, uid, uid));
  33. ResVoid re = new ResVoid();
  34. re.setCode(200);
  35. re.setMessage("Success");
  36. return re;
  37. //bookRepository.save(new Book("书名11", "作者", "上架时间", 100, 23, "创建时间", "更新时间", "创建uid", "更新uid"));
  38. //bookRepository.save(new Book("书名12", "作者", "20190504", 100, 23, "20190504", date, "3", "4"));
  39. //bookRepository.save(new Book("西游记10", "吴承恩", "20190504", 100, 20, "20190504", date, "2", "3"));
  40. }
  41. @ApiOperation(value = "根据作者名字或者笔名查找书籍", notes = "根据作者名字或者笔名查找书籍")
  42. @ApiImplicitParam(dataType = "String", name = "author", value = "根据作者名字或者笔名查找书籍", paramType = "path",required = true)
  43. @RequestMapping(value = "/findByAuthor/{author}", method = RequestMethod.GET)
  44. public Response findByAuthor(@PathVariable("author") String author) {
  45. List<Book> result = bookRepository.findByAuthor(author);
  46. System.out.println("一共有多少条呢----" + result.size());
  47. for (Book book : result) {
  48. System.out.println(book);
  49. }
  50. System.out.println("================================");
  51. Response re = new Response();
  52. re.setCode(200);
  53. re.setMessage("Success");
  54. re.setSize(result.size());
  55. re.setObject(result);
  56. return re;
  57. }
  58. @ApiOperation(value = "根据书籍名称进行找书", notes = "根据书籍名称进行找书")
  59. @ApiImplicitParam(dataType = "String", name = "name", value = "根据书籍名称进行找书", paramType = "path",required = true)
  60. @RequestMapping(value = "/findByName/{name}", method = RequestMethod.GET)
  61. public Response findByName(@PathVariable String name) {
  62. List<Book> result = bookRepository.findByName(name);
  63. Response re = new Response();
  64. re.setCode(200);
  65. re.setMessage("Success");
  66. re.setSize(result.size());
  67. re.setObject(result);
  68. return re;
  69. }
  70. @ApiOperation(value = "更新书籍信息", notes = "更新书籍信息")
  71. @ApiImplicitParam(dataType = "Book", name = "book", value = "更新书籍信息", required = true)
  72. @RequestMapping(value = "/updateBookName", method = RequestMethod.POST)
  73. public Response updateBookName(@RequestBody Book book) {
  74. int count = bookRepository.updateBookName("三国演义", 2);
  75. System.out.println(count);
  76. List<Book> result = bookRepository.findAll();
  77. Response re = new Response();
  78. re.setCode(200);
  79. re.setMessage("Success");
  80. re.setSize(result.size());
  81. re.setObject(result);
  82. return re;
  83. }
  84. @ApiOperation(value = "更新书籍信息", notes = "更新书籍信息")
  85. @ApiImplicitParam(dataType = "Book", name = "book", value = "更新书籍信息", required = true)
  86. @RequestMapping(value = "/updateBook", method = RequestMethod.POST)
  87. public Response updateBook(@RequestBody Book book) {
  88. Date dt = new Date();
  89. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
  90. String date = sdf.format(dt);
  91. Book book_orignial = bookRepository.findById(book.getId());
  92. book.setOntime(book_orignial.getOntime());
  93. book.setCreatuid(book_orignial.getCreatuid());
  94. book.setCreatedt(book_orignial.getCreatedt());
  95. book.setUpdatedt(date);
  96. book.setUpdateuid(uid);
  97. bookRepository.save(book);
  98. List<Book> result = bookRepository.findAll();
  99. Response re = new Response();
  100. re.setCode(200);
  101. re.setMessage("Success");
  102. re.setSize(result.size());
  103. re.setObject(result);
  104. return re;
  105. }
  106. }

  

转载于:https://www.cnblogs.com/qianjinyan/p/6632021.html

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号