Spring Data JPA简单使用
用Spring Data JPA操作数据库
这份教程教你用Spring Data JPA从关系数据库mysql中存储和提取数据。总结来自https://spring.io/guides/gs/accessing-data-jpa/
1.用Maven构建工程
添加依赖
<!-- spring boot data jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2.Application properties参数设置
spring.datasource.url=jdbc:mysql://localhost:3306/spp?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=liuwb123
#spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update
3.定义一个简单的实体
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
protected Customer() {}
public Customer(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return String.format(
"Customer[id=%d, firstName='%s', lastName='%s']",
id, firstName, lastName);
}
}
这样定义了一个有三个属性的类,id,firstName和lastName,还包含了两个构造器。其中默认构造器只为JPA使用,你不会直接用它,所以被protecred给修饰了。另外一个构造器你需要用它来创造实例,再将数据保存到数据库中。
这个类被@Entity注解,表明这是一个JPA实体。虽然缺少了@Tabel注解,但是这个实体依旧会被映射成一张名字为Customer数据库的表。
Customer的id属性被@Id给注解,JPA会把这个属性识别为一个主键,除了被@Id注解,还被@GeneratedValue注解,表明这个属性会以自增的方式生成值。
其他的两个属性firstName和lastName没有被注解,这两个属性将会以同名的方式,映射成数据库表中的字段。
toString方法只是为了方便查看customer类的属性。
4.创建简单的查询接口
Spring Data JPA 聚焦于用JPA在关系型数据库中存储数据。Spring Data Jpa最具有特色的地方就是能够自动地在运行时创建一张数据库的表。
现在我们来看看它是怎样的一个流程,创建一个接口引用Customer实体。
import java.util.List;
import org.springframework.data.repository.CrudRepository;
public interface CustomerRepository extends CrudRepository<Customer, Long> {
List<Customer> findByLastName(String lastName);}
CustomerRepository继承CrudRespository接口,父接口的参数设置为实体的类和实体主键的数据类型。通过扩展CrudRespository,CustomerRepository继承了少数的方法,包括存数据,删除数据和查找Customer的实体。
Spring Data JPA 也允许你定义其他的查询方法。例如,findByLastName方法。 参数需要以类名和类属性命名。
在Java应用程序中,你需要写一个类去实现CustomerRepository接口。但是真正让Spring Data JPA强大的,根本不需要实现这个接口,这件事情Spring Data JPA自动帮你实现了。
5.查询数据
@RunWith(SpringRunner.class)
@SpringBootTest
public class LearnApplicationTests {
// spring data jpa
@Autowired
CustomerRepository customerRepository;
@Test
public void contextLoads() {
// 存数据
customerRepository.save(new Customer("jack","baur"));
// 查数据
List<Customer> customers = customerRepository.findByLastName("baur");
System.out.println(customers.get(0).toString());
}
}
6.总结
接口除了继承CrudRepository还可以继承JpaRepository,PagingAndSortingRepository
,CrudRepository主要提供CRUD操作,PagingAndSortingRepository 提供翻页和对数据进行排序,而JpaRepository提供批量操作的方法,除此之外JpaRepository拥有其他两个的所有方法,所以继承JpaRepository准没错。不过本次例子中继承的是CrudRepository,项目地址,https://github.com/drinkTeaT/springboot。好了,bye~。
Spring Data JPA简单使用的更多相关文章
- Spring Data JPA 简单查询--接口方法
一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...
- JAVA入门[20]-Spring Data JPA简单示例
Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ...
- spring data jpa 简单使用
通过解析方法名创建查询 通过前面的例子,读者基本上对解析方法名创建查询的方式有了一个大致的了解,这也是 Spring Data JPA 吸引开发者的一个很重要的因素.该功能其实并非 Spring Da ...
- Spring Data JPA简单查询接口方法速查
下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.(1)先按照功能进行分类 ...
- Spring Data Jpa简单了解
原文来源:http://www.cnblogs.com/xuyuanjia/p/5707681.html 以下是自己简单整理原有文章,其实就是在原来文章基础上化重点以及可能会有所删减的方式进行整理,需 ...
- Spring Data JPA 简单查询--方法定义规则
一.常用规则速查 1 And 并且2 Or 或3 Is,Equals 等于4 Between 两者之间5 LessThan 小于6 LessThanEqual 小于等于7 Gre ...
- Spring Data JPA 简单查询
一.常用规则速查 1 And 并且2 Or 或3 Is,Equals 等于4 Between 两者之间5 LessThan 小于6 LessThanEqual 小于等于7 Gre ...
- Spring Data Jpa 简单使用事务
对于两张表,需要顺序操作,必须全部表均操作成功才可,否则两张表不操作. 例如,现在有device,collectionpoint两张表,向两张表顺序执行insert操作 SQL如下 INSERT IN ...
- 【jpa】spring data jpa 配置使用
1.spring data jpa 简单介绍 jpa是用于对象持久化的API,jpa是一种规范,而其他的ORM框架(hibernate,topLink等)是其实现,所以jpa可以使用不同的实现方式,修 ...
随机推荐
- centos6.5 git clone http 报错
自己搭建服务器环境为centos6.5,需要使用git clone 命令的时候报错 首先查看centos上安装的git版本,我的版本为1.7.10 报错后,查阅相关资料需将centos升级,操作如下 ...
- 【锁】java 锁的技术内幕
转载自https://www.2cto.com/kf/201607/525119.html 一.基础知识 在Java并发编程里头,锁是一个非常重要的概念.就如同现实生活一样,如果房子上了锁.别人就进不 ...
- C# 注册Dll文件
有时会遇到dll在系统中不存在,需要程序自己去注册所需的dll文件. 注册dll 需要用到regsvr32命令,其用法为:"regsvr32 [/s] [/n] [/u] [/i[:cmdl ...
- php代码书写习惯优化小结
(1)使用 static 静态方法比普通方法快4倍(2)echo输出快于print(3)连接字符使用 , 代替 .(4)循环之前先取出最大值,而不是在循环里面取值 正确的方法 $max ...
- 修复win10无法双击打开txt文档.reg
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.txt]@="txtfile""Content Type& ...
- ubuntu下QtCreator启动无响应问题解决
打开Qt后就卡死. 解决方法:删除系统配置目录下的QtProject文件夹: find / -name QtProject 输出: /root/.config/QtProject 删除QtProjec ...
- Qt 学习之路 2(72):线程和事件循环
Qt 学习之路 2(72):线程和事件循环 <理解不清晰,不透彻> -- 有需求的话还需要进行专题学习 豆子 2013年11月24日 Qt 学习之路 2 34条评论 前面一章我 ...
- redis mac安装配置
去官网下载redis. 解压后 终端cd 至目标文件夹 编译测试: sudo make test 编译安装: sudo make install 输入redis-server启动服务 停止 redis ...
- [CSU1911]Card Game(FWT)
[vjudge-CSU1911] FWT_or #include<cstring> #include<iostream> #include<algorithm> # ...
- POJ_1850 Code【组合的运用】
题目: Transmitting and memorizing information is a task that requires different coding systems for the ...