闲话少说,首先动起来(基于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. Servlet编程实例 续3

    ----------------siwuxie095 Servlet 跳转之请求的转发 修改 LoginServlet.java: package com.siwuxie095.servlet; im ...

  2. AngularJs(Part 11)--自定义Directive

    先对自定义Directive有一个大体的映像 myModule.directive('myDirective',function(injectables){ var directiveDefiniti ...

  3. CODING 代码托管架构升级之路

    本文为 CODING 创始团队成员王振威在『CODING 技术小馆:上海站』的演讲实录. CODING 技术小馆,是由国内专业的一站式软件服务平台 CODING 主办的一系列技术沙龙.将邀请数位业内知 ...

  4. Java Synchronized的原理

    我们先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的: public class SynchronizedDemo{ public void method(){ syn ...

  5. 3.Windows应急响应:蠕虫病毒

    0x00 前言 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播, 每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序.常见的蠕虫 ...

  6. 1.4 如何防止sql注入

    如何防止sql注入   1.检查变量数据类型和格式 如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型: ...

  7. 如何解决Failed to start component [StandardEngine[Catalina].StandardHost[127.0.0.1].StandardContext[]]问题

    调试web项目,项目部署到tomcat,报如下错误: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExc ...

  8. MySQL数据库修改字符集为UTF-8

    需要修改my.ini [client]下添加 default_character_set = utf8 [mysql]下添加 default_character_set = utf8 [mysqld] ...

  9. C# 将数组转换为以逗号分隔的字符串

    例子: string[] array = { "A", "B", "C", "D" }; string str = st ...

  10. 项目接入apm后错误报警总结

    此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言: 后端服务一般都有监控措施,一般可以及时发现线上错误,但是很多项目的前端却没有线上报警服务,即使有错误, ...