一、Spring-Data-Jpa 初体验(基于SpringBoot)
闲话少说,首先动起来(基于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)的更多相关文章
- Spring Data JPA 初体验
一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...
- Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA
大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...
- Spring Data JPA初使用 *****重要********
Spring Data JPA初使用 我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样 ...
- Spring Data JPA初使用(转载)
我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...
- Spring Data JPA初使用
我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...
- 初入spring boot(七 )Spring Data JPA
Spring Data JPA通过提供基于JPA的Repository极大地减少JPA作为数据访问方案的代码量. 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义 ...
- JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
- Spring Data JPA系列4——Spring声明式数事务处理与多数据源支持
大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第四篇了,先来回顾下前面三篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...
- 【ORM框架】Spring Data JPA(一)-- 入门
本文参考:spring Data JPA入门 [原创]纯干货,Spring-data-jpa详解,全方位介绍 Spring Data JPA系列教程--入门 一.Spring Data JPA介 ...
- Spring Boot整合Spring Data JPA
1.JPA 2.Spring Data JPA 3.导入依赖 4.连接数据库 5.实体类 6.Repository 7.测试 1.JPA JPA是Java Persistence API的简称,中文名 ...
随机推荐
- 如何在niosII中添加i2c外设_winday_新浪博客
如何在niosII中添加i2c外设_winday_新浪博客 如何在niosII中添加i2c外设 winday 摘要:本文说明了如何在niosII添加第三方i2c外设,以供参考. 由于本人使用的Alte ...
- .Net下RabbitMQ发布订阅模式实践
一.概念AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发 ...
- Dialog 自定义使用1
一: 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- [poj3281]Dining(最大流+拆点)
题目大意:有$n$头牛,$f$种食物和$d$种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢 ...
- Unity添加自定义快捷键——UGUI快捷键
在Editor下监听按键有以下几种方式: 自定义菜单栏功能: using UnityEngine; using UnityEditor; public static class MyMenuComma ...
- p2279&bzoj1217 消防局的设立
传送门(洛谷) 传送门(bzoj) 题目 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 连接这些基地,并且每两个基地都能够通过道路到达, ...
- KINECT2通过ROS在线跑ORBSLAM2
source ~/.bashrc export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/user/ORB_SLAM2/Examples/ROS 上面这个一 ...
- Saving output of a grep into a file with colors
19 down vote favorite 7 I need to save the result of a grep command into a file, but I also want the ...
- 【mybatis-记录】
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- asp.net Page.Controls对象(找到所有服务器控件)
前台 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...