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简单使用的更多相关文章

  1. Spring Data JPA 简单查询--接口方法

    一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...

  2. JAVA入门[20]-Spring Data JPA简单示例

    Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ...

  3. spring data jpa 简单使用

    通过解析方法名创建查询 通过前面的例子,读者基本上对解析方法名创建查询的方式有了一个大致的了解,这也是 Spring Data JPA 吸引开发者的一个很重要的因素.该功能其实并非 Spring Da ...

  4. Spring Data JPA简单查询接口方法速查

    下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.(1)先按照功能进行分类 ...

  5. Spring Data Jpa简单了解

    原文来源:http://www.cnblogs.com/xuyuanjia/p/5707681.html 以下是自己简单整理原有文章,其实就是在原来文章基础上化重点以及可能会有所删减的方式进行整理,需 ...

  6. Spring Data JPA 简单查询--方法定义规则

    一.常用规则速查 1  And 并且2  Or  或3  Is,Equals 等于4  Between  两者之间5  LessThan 小于6  LessThanEqual   小于等于7  Gre ...

  7. Spring Data JPA 简单查询

    一.常用规则速查 1  And 并且2  Or  或3  Is,Equals 等于4  Between  两者之间5  LessThan 小于6  LessThanEqual   小于等于7  Gre ...

  8. Spring Data Jpa 简单使用事务

    对于两张表,需要顺序操作,必须全部表均操作成功才可,否则两张表不操作. 例如,现在有device,collectionpoint两张表,向两张表顺序执行insert操作 SQL如下 INSERT IN ...

  9. 【jpa】spring data jpa 配置使用

    1.spring data jpa 简单介绍 jpa是用于对象持久化的API,jpa是一种规范,而其他的ORM框架(hibernate,topLink等)是其实现,所以jpa可以使用不同的实现方式,修 ...

随机推荐

  1. jmeter在linux上运行

    若需在linux操作系统上运行jmeter,则需要以命令行的形式运行. 前提条件:linux环境下配置好jdk.jmeter的环境变量等. 1.首先在Windows的图形化界面做好脚本,设置好并发用户 ...

  2. 性能测试常用sql语句

    做了一段时间的性能测试,把自己在性能测试过程中,使用到的Oracle中用到的sql语句整理一番,做个备忘: (1)多个字段以某种格式拼接 Oracle方式:"||"字符串拼接符; ...

  3. linux防火墙(二)—— iptables语法之选项和控制类型

    一.语法: iptables [-t 表名] 选项 [链名] [匹配条件] [-j 控制类型] 未指定表名时,默认用filter表:链名,控制类型要大写:除非设置默认策略,否则必须指定匹配条件:不指定 ...

  4. Sample-Code:Translator

    <h2>My Spanish Translator</h2> <p> Enter your text in English:  </p> <p&g ...

  5. win7下钩子失效解决方案

    win7键盘钩子失效解决方法:1.win开始右键+r(运行) 2.将其输入regedit.exe(注册表管理器),回车打开注册表管理器 3.进入HKEY_LOCAL_MACHINE4.进入到SYS ...

  6. flex布局浅谈

    flex布局浅谈和实例 阿基米德曾说给我一个支点我可以撬动地球,而拥有flex基本可以撬动所有的布局. 1.flex布局基本介绍及效果展示 工欲善其事必先利其器,来来来,一起看下基础知识先(呵~,老掉 ...

  7. Svn安装成功后的操作

    一.服务器端创建目录 在Svn服务器端创建一个用来保存客户端提交文件的文件夹 (我的路径是d:/Svn/App/book) 首先将Svn的服务端安装目录/bin 进行环境配置,以下操作是在进行环境配置 ...

  8. 【算法笔记】B1014 福尔摩斯的约会

    1014 福尔摩斯的约会 (20 分) 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hy ...

  9. HDU - 3033 滚动数组有坑

    每层至少一个,滚动时要判上一层非法与否,所以每次都要memset #include<bits/stdc++.h> #define rep(i,j,k) for(int i=j;i<= ...

  10. Phyton Flask框架学习记录。

    注意:在左侧菜单栏(在JQuery插件库下载的)右边是采用<iframe> 标签嵌入其他页面,此时标签的src应用用后台中的方法名称(本人测试用的是无参数的方法), 而页面跳转window ...