SpringBoot与JPA
JPA是什么
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA可以极大的简化JPA的写法,可以爱几乎不用写实现的情况下,实现对数据库的访问操作。除了CRUD外,还包括分页,排序等一些常用的功能,
首先我们需要清除的是Spring data是一个开源框架,在这个框架中Spring Data JPA只是这个框架中的一个模块,所以名称才叫Spring Data JPA。如果单独使用JPA开发,你会发现这个代码量和使用JDBC开发一样有点烦人,所以Spring Data JPA的出现就是为了简化JPA的写法,让你只需要编写一个接口继承一个类就能实现CRUD操作了。
JPA实现数据库增删改查
步骤一:导入依赖
<!-- 引入mysql需要的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 引入spring data jpa需要的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
步骤二:application.properties文件
#Spring Data JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jackson.serialization.indent-output=true
spring.jpa.database=mysql
步骤三:创建实体类
package com.wn.springbootproject01.entity; import javax.persistence.*; @Entity
@Table(name = "Grade")
public class Grade { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer grade_id; private String grade_name; public Grade(Integer grade_id, String grade_name) {
this.grade_id = grade_id;
this.grade_name = grade_name;
} public Grade(){ } public Integer getGrade_id() {
return grade_id;
} public void setGrade_id(Integer grade_id) {
this.grade_id = grade_id;
} public String getGrade_name() {
return grade_name;
} public void setGrade_name(String grade_name) {
this.grade_name = grade_name;
}
}
步骤四:创建dao层
package com.wn.springbootproject01.dao; import com.wn.springbootproject01.entity.Grade;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; @Repository
public interface GradeDao extends CrudRepository<Grade,Integer> {
}
步骤五:创建service接口层
package com.wn.springbootproject01.service;
import com.wn.springbootproject01.entity.Grade;
public interface GradeService {
//新增
public Grade getinter(Grade grade);
//修改
public Grade getupdate(Grade grade);
//删除
public void getdel(Integer id);
//查询
public Iterable<Grade> getAll();
}
步骤六:创建serviceImpl实现层
package com.wn.springbootproject01.service.impl; import com.wn.springbootproject01.dao.GradeDao;
import com.wn.springbootproject01.entity.Grade;
import com.wn.springbootproject01.service.GradeService;
import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service
public class GradeServiceImpl implements GradeService { @Resource
private GradeDao dao; @Override
public Grade getinter(Grade grade) {
return dao.save(grade);
} @Override
public Grade getupdate(Grade grade) {
return dao.save(grade);
} @Override
public void getdel(Integer id) {
dao.deleteById(id);
} @Override
public Iterable<Grade> getAll() {
return dao.findAll();
}
}
步骤七:创建controller层
package com.wn.springbootproject01.controller; import com.wn.springbootproject01.entity.Grade;
import com.wn.springbootproject01.service.GradeService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; @Controller
@RequestMapping("/grade")
public class GradeController { //植入dao层对象
@Resource
private GradeService service; //新增
@RequestMapping("/getinter")
@ResponseBody
public Grade getinter(){
Grade grade=new Grade();
grade.setGrade_name("小明");
return service.getinter(grade);
} //修改
@RequestMapping("/getupdate")
@ResponseBody
public Grade getupdate(){
Grade grade=new Grade();
grade.setGrade_id();
grade.setGrade_name("小红");
return service.getupdate(grade);
} //删除
@RequestMapping("/getdel")
@ResponseBody
public String getdel(){
service.getdel();
return "success";
} //查询
@RequestMapping("/getAll")
@ResponseBody
public Iterable<Grade> getAll(){
return service.getAll();
} }
步骤八:实现结果
新增:


修改:


删除:


查询:

SpringBoot与JPA的更多相关文章
- Springboot+Atomikos+Jpa+Mysql实现JTA分布式事务
1 前言 之前整理了一个spring+jotm实现的分布式事务实现,但是听说spring3.X后不再支持jotm了,jotm也有好几年没更新了,所以今天整理springboot+Atomikos+jp ...
- 【极简版】SpringBoot+SpringData JPA 管理系统
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBo ...
- 带你搭一个SpringBoot+SpringData JPA的环境
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Da ...
- 二、springboot使用jpa
花了几天时间,好好看了看springboot的jpa部分,总结了常用的形式. 1.通过STS工具添加jpa的依赖项 要连mysql,测试的时候需要web,顺便添加了lombok不写set和get方法了 ...
- Springboot+MyBatis+JPA集成
1.前言 Springboot最近可谓是非常的火,本人也在项目中尝到了甜头.之前一直使用Springboot+JPA,用了一段时间发现JPA不是太灵活,也有可能是我不精通JPA,总之为了多学学Sp ...
- 第11章—使用对象关系映射持久化数据—SpringBoot+SpringData+Jpa进行查询修改数据库
SpringBoot+SpringData+Jpa进行查询修改数据库 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分.但它又不限于EJB 3.0,你可以在Web应用.甚至桌面应用 ...
- 集成Springboot+MyBatis+JPA
1.前言 Springboot最近可谓是非常的火,本人也在项目中尝到了甜头.之前一直使用Springboot+JPA,用了一段时间发现JPA不是太灵活,也有可能是我不精通JPA,总之为了多学学Spri ...
- SpringBoot Data JPA 关联表查询的方法
SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ...
- 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页
使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...
- springboot使用Jpa连接数据库
springboot使用Jpa连接数据库 1.pom.xml: <?xml version="1.0" encoding="UTF-8"?> < ...
随机推荐
- PHP过滤换行的方法
PHP过滤换行的方法 <pre> public function trimall($str) { $qian = array(" ", " ", & ...
- 130道ASP.NET面试题(二)
71.什么是反射?答:动态获取程序集信息 72.用Singleton如何写设计模式答:static属性里面new ,构造函数private 73.什么是Application Pool?答:Web应用 ...
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 - 推酷 - 360安全浏览器 7.1
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 时间 2014-02-11 21:08:00 博客园-所有随笔区 ...
- 【Linux系列】Centos 7安装以及网络配置(一)
目的 本文主要介绍以下两点: 一. 如何在Oracle VM VirtualBox安装centos(已有VirtualBox) 二. 如何在内网里实现虚拟机访问外网.物理主机以及物理主机访问虚拟机 一 ...
- 比较一下inner join(可直接简写为join)和where直接关联
SELECT * FROM A ,B WHERE A.ID = B.ID 是比较常用的2个表关联.之前一直用这个,后来换了家公司发现这家公司的报表大多数都是用inner join,稍微研究了一下.查阅 ...
- 力扣(LeetCode)整数形式的整数加法 个人题解
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+K 的 ...
- linux命令指令
1.ls显示目录内容 -a 显示目录下所有文件 -l 显示详细信息 ls *.c 列出当前目录所有的.c文件 2.uname -a 查看内核版本 3.whoami 查看谁登陆虚拟机 4.cd 切 ...
- python进程池与线程池
为什么会进行池化? 一切都是为了效率,每次开启进程都会分配一个属于这个进程独立的内存空间,开启进程过多会占用大量内存,系统调度也会很慢,我们不能无限的开启进程. 进程池原来大概如下图 假设有100个任 ...
- Android的系统框架
Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核. 图1:Android系统架构图 每 ...
- web 开发常用字符串表达式匹配
记录一下 web 开发中常用的一些字符串模式,这是我遇到的一些,后面如果还有的话,欢迎大神提出,会继续更新. 正则表达式 这个主要用在前端的验证,nginx 路径匹配,shell 脚本文本处理,后端感 ...