一、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的简称,中文名 ...
随机推荐
- Servlet编程实例 续3
----------------siwuxie095 Servlet 跳转之请求的转发 修改 LoginServlet.java: package com.siwuxie095.servlet; im ...
- AngularJs(Part 11)--自定义Directive
先对自定义Directive有一个大体的映像 myModule.directive('myDirective',function(injectables){ var directiveDefiniti ...
- CODING 代码托管架构升级之路
本文为 CODING 创始团队成员王振威在『CODING 技术小馆:上海站』的演讲实录. CODING 技术小馆,是由国内专业的一站式软件服务平台 CODING 主办的一系列技术沙龙.将邀请数位业内知 ...
- Java Synchronized的原理
我们先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的: public class SynchronizedDemo{ public void method(){ syn ...
- 3.Windows应急响应:蠕虫病毒
0x00 前言 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播, 每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序.常见的蠕虫 ...
- 1.4 如何防止sql注入
如何防止sql注入 1.检查变量数据类型和格式 如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型: ...
- 如何解决Failed to start component [StandardEngine[Catalina].StandardHost[127.0.0.1].StandardContext[]]问题
调试web项目,项目部署到tomcat,报如下错误: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExc ...
- MySQL数据库修改字符集为UTF-8
需要修改my.ini [client]下添加 default_character_set = utf8 [mysql]下添加 default_character_set = utf8 [mysqld] ...
- C# 将数组转换为以逗号分隔的字符串
例子: string[] array = { "A", "B", "C", "D" }; string str = st ...
- 项目接入apm后错误报警总结
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言: 后端服务一般都有监控措施,一般可以及时发现线上错误,但是很多项目的前端却没有线上报警服务,即使有错误, ...