时间:2021-05-20
JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。JPA作为标准,实际上并没有说局限于某个固定的数据源,事实上mysql,mongo, solr都是ok的。接下来我们将介绍下springboot结合jpa 来实现mysql的curd以及更加复杂一点的sql支持
jpa系列教程将包含以下几块
本篇为开始第一篇,先搭建一个可以愉快玩耍的jpa项目
I. 环境搭建
我们选择的数据库为mysql,所以有必要先安装一下,这里跳过mysql的安装教程,直接进入springboot项目的搭建
1. pom依赖
我们这里选择的是2.0.4.RELEASE版本进行演示
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from update --></parent><properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <java.version>1.8</java.version></properties><dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.45</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency></dependencies><build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </pluginManagement></build><repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository></repositories>上面的pom依赖中,关键的是下面两个, 第一个引入的是jpa相关包,后面那个则是mysql的连接依赖,相当于指定操作mysql数据库
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency>2. 数据准备
创建一个测试表进行后续的读写操作,为了后续的事物讲解方便,我们创建一个表,里面存了每个人的钱
CREATE TABLE `money` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名', `money` int(26) NOT NULL DEFAULT '0' COMMENT '钱', `is_deleted` tinyint(1) NOT NULL DEFAULT '0', `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `name` (`name`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;在表中随意插入几条数据,以方便后面使用
INSERT INTO `money` (`id`, `name`, `money`, `is_deleted`, `create_at`, `update_at`)VALUES (1, '一灰灰blog', 100, 0, '2019-04-18 17:01:40', '2019-04-18 17:01:40'), (2, '一灰灰2', 200, 0, '2019-04-18 17:01:40', '2019-04-18 17:01:40');3. 属性配置
创建springboot工程之后,添加mysql的相关配置,在resources目录下,新建文件 application.properties
## DataSourcespring.datasource.url=jdbc:mysql://127.0.0.1:3306/story?useUnicode=true&characterEncoding=UTF-8&useSSL=false#spring.datasource.driver-class-name= com.mysql.jdbc.Driverspring.datasource.username=rootspring.datasource.password=4. 项目构建并测试
根据JPA的一般使用姿势,我们需要针对上面的表,创建一个对应的POJO对象,将它们关联起来,代码如下:
表结构定义完毕之后,接下来就是定义db的操作api,jpa的使用,通过方法名来解析出对应的sql,我们这里定义一个简单的Money表的操作API:
上面两个定义完毕之后,不需要其他的操作,就可以进行测试环境了,上面这个Repository提供了一些简单的操作
package com.git.hui.boot.jpa;import com.git.hui.boot.jpa.demo.JpaQueryDemo;import com.git.hui.boot.jpa.entity.MoneyPO;import com.git.hui.boot.jpa.repository.MoneyDemoRepository;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * Created by @author yihui in 20:58 19/6/10. */@SpringBootApplicationpublic class Application { public Application(MoneyDemoRepository moneyDemoRepository) { MoneyPO moneyPO = moneyDemoRepository.findById(1).get(); System.out.println(moneyPO); } public static void main(String[] args) { SpringApplication.run(Application.class); }}针对上面的测试case进行简单的说明,前面定义了一个POJO对象和一个RepositoryAPI,我们想直接操作对应的表,需要借助这个RepositoryAPI对象,但是它是接口类型,我们没法直接使用的,因为我们是在Spring生态体系中,所以可以直接通过IoC注入方式使用
所以上面的测试中,MoneyDemoRepository 对象实际上是由框架生成的一个代理对象,下面我们看下执行结果
5. 小结
从上面的步骤下来,会发现搭建一个jpa的项目工程属于比较简单的过程,添加必要的依赖,稍微注意的是两个
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文介绍了Maven工程搭建springboot+springmvc+JPA的示例,分享给大家,具体如下:添加Springboot支持,引入相关包:1、mave
SpringBoot集成activiti基础环境搭建添加依赖org.activitiactiviti-spring-boot-starter-basic6.0.
如何快速构建一个SpringBoot的项目工具ideaJDK版本1.8SpringBoot版本1.5.9环境搭建实现:最基础前端可以访问到数据库内的内容开始1.
Maven搭建springboot项目本文是基于Windows10系统环境,使用Maven搭建springboot项目Windows10apache-maven
环境配置介绍jdk1.8,springBoot1.5.3.RELEASE,MySQL,SpringData,JPA问题描述SpringData提供了一套简单易用