闲话少说,首先动起来(基于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. BO 与 VO 的属性拷贝 copyProperties(bo,vo)

    NewClass extends OldClass   : newClass继承自oldClass,属性大多数相同,但是也有新的扩展. beanUtils.copyProperties(oldClas ...

  2. play的job执行方式

    除了使用Quartz CRON trigger, 还可以写一个action来专门触发job,这样子就可以随时启动job的开始,而且还能并行其他的任务.较方便.

  3. 进击的菜鸟问题1(设置checkbox全选)

    问题:设置页面标签属性时,常常使用jquery.attr("","");在设置checkbox属性时,会出现操作设置checkbox属性后,无法清除,导致第二次 ...

  4. oracle 新增字段

    alter table shop_procategory add (category_ORDER_FIELD number(10) default '0' not null);comment on c ...

  5. spring 4.0 注解数据验证2

    在spring 4.0 注解数据验证1中有基本的数据验证方法.还是那个POJO: package com.suyin.pojo; import java.lang.reflect.Field; imp ...

  6. super关键字主要有以下两种用途

    super关键字主要有以下两种用途. 1.调用父类的构造方法 子类可以调用由父类声明的构造方法.但是必须在子类的构造方法中使用super关键字来调用.其具体的语法格式如下: super([参数列表]) ...

  7. storm启动nimbus源码分析-nimbus.clj

    nimbus是storm集群的"控制器",是storm集群的重要组成部分.我们可以通用执行bin/storm nimbus >/dev/null 2>&1 &a ...

  8. 手机连接fiddler后,浏览器无法打开网页或者fiddler抓取不到手机应用相关数据的情况

    关于手机如何连接fiddler,网上有很多教程,我暂时就不写了 今天在使用fiddler的过程中,发现fiddler突然无法抓取移动端应用的数据包,再三确认连接无误.因此就开始了解决之旅 起因是安卓手 ...

  9. 使用JSP输出九九乘法表

    在html网页中编写Java代码是,需要使用<%%>来编写,<%=%>表示取等号后面的值,如<%="hello"%>就会输出hello. < ...

  10. python 里 np.array 的shape (2,)与(2,1)的分别是什么意思,区别是什么?

    numpy.ndarray.shap是返回一个数组维度的元组. (2,)与(2,1)的区别如下:   ndarray.shape:数组的维度.为一个表示数组在每个维度上大小的整数元组.例如二维数组中, ...