JPA 绝对是简化数据库操作的一大利器。

概念

首先了解 JPA 是什么?

JPA(Java Persistence API)是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。

注意:JPA 是一套规范,不是一套产品,那么像 Hibernate、TopLink、JDO 它们是一套产品,如果说这些产品实现了这个 JPA 规范,那么就可以叫它们为 JPA 的实现产品。

实例操作

添加依赖
       <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置文件

application.yml

spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbgirl?characterEncoding=utf8&useSSL=false
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true

其实这个 hibernate.hbm2ddl.auto 参数的作用主要用于:自动创建 | 更新 | 验证数据库表结构,有四个值:

create:每次加载 hibernate 时都会删除上一次的生成的表,然后根据 model 类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

create-drop:每次加载 hibernate 时根据 model 类生成表,但是 sessionFactory 一关闭,表就自动删除。

update:最常用的属性,第一次加载 hibernate 时根据 model 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate 时根据 model 类自动更新表结构,即使表结构改变了,但表中的行仍然存在,不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。

validate:每次加载 hibernate 时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

实体类和 Dao
@Entity
public class Girl { @Id
@GeneratedValue
private int id; private String name; private int age; //添加无参构造
public Girl() {
}
// get和set方法省略
}

Dao 只要继承 JpaRepository 类,不需要写方法

public interface GirlRepository extends JpaRepository<Girl,Integer> {

}
GirlController类
@RestController
public class GirlController { @Resource
private GirlRepository girlRepository; @GetMapping("/girls")
public List<Girl> getList(){
return girlRepository.findAll();
} @PostMapping("/girls")
public Girl girlAdd(@RequestParam("name") String name,
@RequestParam("age") int age){ Girl girl = new Girl();
girl.setAge(age);
girl.setName(name);
return girlRepository.save(girl); } @GetMapping(value = "/girls/{id}")
public Girl find(@PathVariable(value = "id") Integer id){
return girlRepository.findById(id).get();
} @PostMapping(value = "/girls/{id}")
public Girl update(@PathVariable(value = "id") Integer id,
@RequestParam("name") String name,
@RequestParam("age") int age){
Girl girl = new Girl();
girl.setId(id);
girl.setAge(age);
girl.setName(name);
return girlRepository.save(girl); } @DeleteMapping(value = "/girls/{id}")
public void delete(@PathVariable(value = "id") Integer id){
girlRepository.deleteById(id);
} @GetMapping(value = "/girls/age/{age}")
public List<Girl> findByAge(@PathVariable(value = "age") Integer age){ return girlRepository.findByAge(age);
}
}

注意:

  • 数据库建库dbgirl
  • 我使用的是springboot2.0.2版本,已经没有findOne 方法,使用findById(id).get() 来获得
  • 测试大家可以使用谷歌浏览器插件Restlet Client - REST API Testing
  • 源码下载:github

最新文章

  1. C# 的 Dictionary 寫入前應注意事項
  2. js补充小知识点(continue,break,ruturn)
  3. ListView控件
  4. HTTP协议 -- 认清协议常用状态码
  5. Java深度历险(五)——Java泛型
  6. 函数柯理化以及利用柯理化实现bind方法
  7. iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法
  8. Search and Replace搜寻与替换工具
  9. JavaScript——Window对象
  10. 我的Fitbit Force手环使用体验
  11. 十五、struts2中的拦截器(框架功能核心)
  12. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.4. 安装JDK
  13. 【转】logger
  14. [转] JavaScript中的属性:如何遍历属性
  15. 禁用win7自己主动配置ipv4地址
  16. 3个微信小程序体验报告
  17. hibernate中各个jar包的含义和关系
  18. java面试之String的理解(自我理解)
  19. oracle 将一个表复制到另外一个表里 .
  20. ss with kcptun

热门文章

  1. js 知识点整理
  2. 图片转换成word 公式
  3. 自动化运维工具saltstack05 -- 之salt-ssh模式
  4. Unity3D之AR开发(一)
  5. 用可道云kodexplorer在dedecms系统网站上秒建私人网盘
  6. NIO基本概念
  7. virtual box下安装ubuntu经验
  8. IIS 无法加载 CSS,JS的问题
  9. 20145214《网络攻防》逆向及Bof基础实践
  10. Servlet学习小结