1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 五 spring-data-Jpa 数据库操作

五 spring-data-Jpa 数据库操作

时间:2021-11-05 18:50:36

相关推荐

五 spring-data-Jpa 数据库操作

概述:java persistence API定义了一些列对象持久化的标准,目前实现这一规范的产品有hibernate、topLink

1、pom.xml中添加组件

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-comector-java</artifactId></dependency>

2、配置数据库相关信息

在application.yml中配置(在这里配置生产环境和开发环境都可以使用)

idea中键入spring.datasoure. driver快捷输入(我也忘了driver前是否加空格了)

datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/dbgril username: rootpassword: root

3、一些数据库的相关操作

create

每次启动应用创建一个空表,若数据库中有同名表则把旧表删除后再创建

update

每次启动应用创建一个表,如果数据库表中有数据,仍然保留数据

create-drop

应用停止的时候,将数据库中的表删除

none

默认的,什么都不做

Validate

验证类中的属性和表结构是否一致,若不一致则报错

spring:profiles:active: devdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/dbgril username: rootpassword: rootjpa:hibernate:ddl-auto: updateshow-sql: true

4、对数据的一些操作

PUT请求方式body不能使用form-data,需要使用x-www-form-urlencoded

1.创建实体类

@Entity 在类名上需要添加该注解

@Id 在id变量上添加该注解声明主键

@GeneratedValue 在id变量上声明该注解表示自动新增

添加get、set方法以及构造方法

2.声明一个接口并继承JpaRepository<T,ID>

T:实体类的类名

ID:Id的数据类型

import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface GrilRepository extends JpaRepository<Gril,Integer>{//拓展通过年龄查询public List<Gril> findByAge(Integer age);}

3.建一个类用@RestController注解,

使用 @Autowired 将接口类注入(简单示例)

4.使用对象的方式进行数据库的交互

创建一个方法使用 Mapping 注解,并在方法内使用jpa提供的数据库的操作方法

findAll() 查询所有

findOne(id) 通过id查找一个数据库对象

delete(id) 通过id删除一个数据库对象

save(S s) 新增或者修改

(如果不传主键id进行新增操作;如果传递了主键id,先在数据库中根据id查找是否有数据,如果没有则新增,如果有则修改)

如果遇到修改部分数据的时候,使用对象的方式保存会导致其它的字段赋值为null

第一种解决方式:使用原生的sql进行更新

第二种解决方式:先进行findOne(id)查找对象,然后set完要更新的字段,最后进行save(gril)更新

5.拓展通过其它变量查询数据库值

在接口中定义抽象方法;

public List<Gril> findByAge(Integer age);

附:code示例

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestControllerpublic class GrilController {@Autowiredprivate GrilRepository grilRepository;//查询女生列表@GetMapping(value = "/grils")public List<Gril> girlList(){List<Gril> list = grilRepository.findAll();return list;};//添加一个女生@PostMapping(value = "/grils")public Gril grilAdd(@RequestParam("cupSize")String cupSize,@RequestParam("age")Integer age){Gril gril = new Gril();gril.setCupSize(cupSize);gril.setAge(age);return grilRepository.save(gril);}//通过id查询一个女生@GetMapping(value = "/grils/{id}")public Gril grilFindOne(@PathVariable("id") Integer id){Gril gril = grilRepository.findOne(id);return gril;}//通过id更新一个女生@PutMapping(value = "/grils/{id}")public Gril grilUpdate(@PathVariable("id")Integer id,@RequestParam("cupSize")String cupSize,@RequestParam("age")Integer age){Gril gril = new Gril();gril.setId(id);gril.setCupSize(cupSize);gril.setAge(age);return grilRepository.save(gril);}//通过id删除一个女生@DeleteMapping(value = "/grils/{id}")public void grilDlete(@PathVariable("id")Integer id){grilRepository.delete(id);}//通过年龄查询@GetMapping("/grils/age/{age}")public List<Gril> findByAge(@PathVariable(value = "age") Integer age){return grilRepository.findByAge(age);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。