1、spring-data-jpa是spring对hibernate的整合
2、spring boot工程在实体类添加注解、添加两个依赖、写配置文件,可以自动生成数据库表
实体类:
@Entity //标明根据该类创建数据表
public class People {
@Id
@GeneratedValue //主键自增
private Long id;
private String name;
public People(){ //必须要有无参构造
}
}
 
application.yml默认配置文件:
#默认配置文件
spring:
profiles:
active: default
datasource: #配置数据库
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/hap_dev
username: root
password: tiger
jpa:
hibernate:
ddl-auto: create #运行时自动根据实体类创建数据库表
show-sql: true
 
注意:
ddl-auto: create,即运行时自动根据实体类创建people数据库表 ,若数据库表
people已存在则先删除再创建
ddl-auto: update,即运行时自动根据实体类创建people数据库表 ,若数据库表
people已存在则不做任何操作
ddl-auto: create-drop,即运行时自动根据实体类创建people数据库表,当应用停
止时删除该表
ddl-auto: none,即运行时什么也不干,无数据库表的操作
ddl-auto: validate,即运行时验证实体类属性与数据库表字段是否一致,不一致
则抛异常
 
 
pom.xml依赖(基本的spring boot依赖要有)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
 
3、由spring-data-jpa操作数据库(结合restful风格)
Service接口类:
// 继承jpa操作数据库的接口,并指定实体类名和主键类型
public interface PeopleRepository extends JpaRepository<People,Long> {
public List<People> findByName(String name);//自定义的方法命名要符合这个格式
}
Controller类:
@RestController
public class PeopleController {
@Autowired
private PeopleRepository peopleRepository;
 
//查询people表所有数据
@GetMapping("/peoples")
public List<People> getAll(){
return peopleRepository.findAll();
}
 
// 插入一条数据
@PostMapping("/peoples")
public People addOne(@RequestParam("name") String name){
People p=new People();
p.setName(name);
return peopleRepository.save(p);
}
 
//由id获取一条数据
@GetMapping("/peoples/{id}")
public People getOne(@PathVariable("id") Long id){
return peopleRepository.findOne(id);
}
 
//由id更新、插入一条数据
@PutMapping("/peoples/{id}")
public People putOne(@PathVariable("id") Long id,@RequestParam("name") String name){
People p=new People();
p.setId(id);
p.setName(name);
return peopleRepository.save(p);
}
 
// 由id删除一条数据
@DeleteMapping("/peoples/{id}")
public void delOne(@PathVariable("id") Long id){
peopleRepository.delete(id);
}
 
//通过name查询一条或多条数据
@GetMapping("/peoples/name/{name}")
public List<People> findByName(@PathVariable("name") String name){
return peopleRepository.findByName(name);
}
}
 
 
 
 

spring-data-jpa操作数据库的更多相关文章

  1. spring data jpa 操作pipelinedb 的continuous view 与stream

    一. 由于pipelinedb是postgreSQL的扩展,因此相关依赖于配置都合集成postgreSQL是一样的. springboot + spring data jpa + postgreSQL ...

  2. Springboot 系列(十)使用 Spring data jpa 访问数据库

    前言 Springboot data jpa 和 Spring jdbc 同属于 Spring开源组织,在 Spring jdbc 之后又开发了持久层框架,很明显 Spring data jpa 相对 ...

  3. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  4. 最近项目中使用Spring data jpa 踩过的坑

    最近在做一个有关OA项目中使用spring data JPA 操作数据库,结果遇到了补个不可思议的麻烦.困惑了好久. 首先看一下问题吧,这就是当时测试“设置角色时,需要首先删除该用户已经拥有的角色时” ...

  5. Spring Data JPA简单使用

    用Spring Data JPA操作数据库 这份教程教你用Spring Data JPA从关系数据库mysql中存储和提取数据.总结来自https://spring.io/guides/gs/acce ...

  6. SpringBoot入门 (五) 数据库访问之spring data jpa

    本文记录学习使用spring data jpa访问数据库 一 什么是Spring Data JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java ...

  7. Spring Boot (6) Spring Data JPA

    JPA 全称Java Persistence API,JPA通过JDK 5.0注解或xml描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 JPA是sun官方提出的java持久化规范, ...

  8. Spring Data JPA 多个实体类表联合视图查询

    Spring Data JPA 查询数据库时,如果两个表有关联,那么就设个外键,在查询的时候用Specification创建Join 查询便可.但是只支持左连接,不支持右连接,虽说左右连接反过来就能实 ...

  9. Spring boot 中Spring data JPA的应用(一)

    最近一直在研究Spring Boot,今天为大家介绍下Spring Data JPA在Spring Boot中的应用,如有错误,欢迎大家指正. 先解释下什么是JPA JPA就是一个基于O/R映射的标准 ...

  10. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

随机推荐

  1. SpringDataJdbc命名查询

    当使用SpringDataJdbc命名查询时,需要配置几处:官方文档:https://docs.spring.io/spring-data/jdbc/docs/2.0.4.RELEASE/refere ...

  2. Semaphore 有什么作用 ?

    Semaphore 就是一个信号量,它的作用是限制某段代码块的并发数.Semaphore 有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可 以访问,如果超出了 n, ...

  3. notify()和 notifyAll()有什么区别?

    当一个线程进入 wait 之后,就必须等其他线程 notify/notifyall,使用 notifyall,可 以唤醒所有处于 wait 状态的线程,使其重新进入锁的争夺队列中,而 notify 只 ...

  4. ADAS最全整理

    为了实现「无人驾驶」的理想,各大整车厂和供应商目前正在开发「高级驾驶员辅助系统」(ADAS),随着 ADAS 慢慢被完善,车辆也在一步一步从 NHTSa 的 0 级过度到第 4 级,实现完全自动化.& ...

  5. PhantomJS,隐身浏览器

    PhantomJS PhantomJS是一个无界面的浏览器,实现了传统浏览器的所有功能,除了没有界面,因此,这是一个隐身浏览器. PhantomJS官网 API,特别需要注意的是Web Page Mo ...

  6. 前端网络安全——前端CSRF

    CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击.容易产生传播蠕虫. CSRF攻击原理: 1.用户先登录A网站 2.A网站确 ...

  7. Android Studio安装问题

    安装问题可以参考:https://blog.csdn.net/y74364/article/details/96121530 但是gradle安装缓慢,需要FQ.有加速器FQ的可以开加速器安装,没有的 ...

  8. java中接口interface和private私有内部类怎样一块配合着用?

    3.接口interface和private内部类协同工作[新手可忽略不影响继续学习]马克-to-win:由于是private内部类,外面无法访问甚至无法看到你编的源代码(如果在不同的包中),非常安全. ...

  9. 判断H5页面是在小程序的webview环境中,还是在微信环境中,还是不在微信

    <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascrip ...

  10. 简单的axios请求返回数据解构赋值

    本地  data.json 文件 { "name": "大熊", "age": 18, "fnc": [ 1, 2, 3 ...