闲话少说,首先动起来(基于springboot+gradle):

1、引入依赖

dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE'
testCompile 'org.springframework.boot:spring-boot-starter-test:2.1.1.RELEASE'//测试用
compileOnly 'org.projectlombok:lombok:1.16.20'//简化代码 //引入数据库驱动
compile 'mysql:mysql-connector-java:8.0.13'
}

2、编写Entity-实体类

/**
* 用户表
*/
@Data
@Entity
@Table(name = "user") // 指定对应的表(最好指定明确,越多不了几个单词)
public class User { @Id //标注该字段为primary key
@GeneratedValue(strategy = GenerationType.IDENTITY) //定义主键生成策略的类型:此处我选择的是主键由数据库自动生成(主要是自动增长型)
@Column(name = "id") // 指定数据列(最好指定,也多不了几个单词)
private Long id; @Column(name = "username",nullable = false) //设置该列不能为空
private String username; @Column(name = "phone")
private String phone; @Column(name = "email")
private String email; @Column(name = "create_time",nullable = false)
private Date createTime; @Column(name = "last_update_time",nullable = false)
private Date lastUpdateTime; }
/**
* GenerationType 说明
* TABLE:使用一个特定的数据库表格来保存主键。
* SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
* IDENTITY:主键由数据库自动生成(主要是自动增长型)
* AUTO:主键由程序控制。
*/

PS:一般来说,JPA“实体”类在persistence.xml文件中指定。使用Spring Boot,此文件不是必需的,而是使用“实体扫描”。默认情况下,将搜索主配置类(注释为@EnableAutoConfiguration或者@SpringBootApplication)下的所有包 。

3、定义Repositry接口

/**
* 定义实体类接口
*/
public interface UserRepo extends CrudRepository<User, Long> {
} /**
* PS: 可以直接继承Repository接口,但是CrudRepository接口已经封装好了很多增删改查的方法,所以直接继承CrudRepository接口更简单,
* 当然,如果你要自己写很多方法的话也行
* 另外,我跟喜欢用JpaRepository,里面有更丰富的jpa封装,笔者将在后续随笔中分享
*/

4、配置数据库 (application.properties)

spring.datasource.url=jdbc:mysql://*.*.*.*:3306/demo-spring-data-jpa?characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=****
spring.datasource.password=****
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver //可以不用,java-spi

ps:java-spi简介

当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现
类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。
基于这样一个约定就能很好的找到服务接口的实现类,而不需要再代码里制定。
jdk提供服务实现查找的一个工具类:java.util.ServiceLoader

5、 使用test测试这段代码

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import top.djlee.jpa.user.model.User; import java.util.Date; @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UserRepoTest { @Autowired
private UserRepo userRepo; @Test
public void save() {
User user = new User();
user.setUsername("Jpa测试");
user.setCreateTime(new Date());
user.setLastUpdateTime(user.getCreateTime());
userRepo.save(user);
} }

运行这段代码后,你就可以看到你的数据库中有如下内容:

表示插入成功!

当然,测试之前你要写SpringBoot启动类(否则程序是不会运行的哟)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class);
}
}

另外,介绍一个开挂的功能:Creating and Dropping JPA Databases - 自动创建数据库表

只需要在application.properties 中加入如下配置:

spring.jpa.hibernate.ddl-auto=create

然后,你删除user表试试,你会发现程序不仅可以执行,还创建了相应的表格,还插入了数据。

但是,如果你不及时移除这句话,那么你每次执行的时候,就会创建新表!我的天,这要是在工作中,老大不杀了你才怪!所以,不建议用这个,还是老老实实建表为好!

当然,你可以看看CrudRepository中其他的方法,构造数据去玩一玩,这里就不做赘述了。

示例代码:https://gitee.com/top-djlee/demo-spring-data-jpa.git

一、Spring-Data-Jpa 初体验(基于SpringBoot)的更多相关文章

  1. Spring Data JPA 初体验

    一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...

  2. Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA

    大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...

  3. Spring Data JPA初使用 *****重要********

    Spring Data JPA初使用 我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样 ...

  4. Spring Data JPA初使用(转载)

    我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...

  5. Spring Data JPA初使用

    我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...

  6. 初入spring boot(七 )Spring Data JPA

    Spring Data JPA通过提供基于JPA的Repository极大地减少JPA作为数据访问方案的代码量. 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义 ...

  7. JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  8. Spring Data JPA系列4——Spring声明式数事务处理与多数据源支持

    大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第四篇了,先来回顾下前面三篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...

  9. 【ORM框架】Spring Data JPA(一)-- 入门

    本文参考:spring Data JPA入门   [原创]纯干货,Spring-data-jpa详解,全方位介绍  Spring Data JPA系列教程--入门 一.Spring Data JPA介 ...

  10. Spring Boot整合Spring Data JPA

    1.JPA 2.Spring Data JPA 3.导入依赖 4.连接数据库 5.实体类 6.Repository 7.测试 1.JPA JPA是Java Persistence API的简称,中文名 ...

随机推荐

  1. vue.js解决刷新404找不到页面问题

    1.将包解压到ROOT目录后创建WEB-INF目录 mkdir WEB-INF 2.进入WEB-INF目录,创建web.xml文件 cd WEB-INF touch web.xml 3.编辑web.x ...

  2. Linux内核解析

     一.Linux内核  一个完整可用的操作系统主要由 4 部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如下图所示:             用户应用程序:是指那些自处理程序. Inter ...

  3. assert.strictEqual()

    assert.strictEqual(actual, expected[, message]) 使用全等运算符(===)测试 actual 参数与 expected 参数是否全等. // 格式 ass ...

  4. DBVisualizer Pro for mac

    公司使用的是DB2数据库,支持DB2的数据库客户端常用的有DBeaver和DBVisualizer.DBeaver是免费的,但本人电脑安装后,启动一直报错,问题一直没解决就放弃了.改用DBVisual ...

  5. SQL标量值函数:小写金额转大写

    我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到. 转换大小写的方法有很多,以下是从数据库函数方面解决这一问题. 效果如图: 调用:SELECT dbo.[Fn_Conve ...

  6. hive-0.12.0-cdh5.1.0安装

    先前条件: 要先安装好MYSQL 下载:hive-0.12.0-cdh5.1.0.tar.gz,并解压到安装目录 1. 添加环境变量 修改/etc/profile文件. #vi /etc/profil ...

  7. 通过命令查看jboss的错误日志文件

    链接jboss: ssh ip -l jboss

  8. AIM Tech Round 5 (rated, Div. 1 + Div. 2) E(思维,构造)

    #include<bits/stdc++.h>using namespace std;long long a[150007];long long ans[150007];int main( ...

  9. 洛谷P1896 [SCOI2005]互不侵犯King

    P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...

  10. Java: 面向对象程序设计(下)

    1. 类的继承 继承的意义: 当一个类A继承了一个已存在的类B后,类A就用于了类B所有的非private的属性和方法,但同时类A还可以根据需要,添加新的方法和属性. 在Java语言中,一个类可以拥有多 ...