1.概述Spring Data

  • 关于Spring Data

SpringCloud Data框架的目标是为数据的访问提供一个通过用的模型。对于程序员来说,不管访问数据库使用的是哪种技术,访问的是哪种数据库,使用了SpringData后,都可以用同样的方式,同样的代码风格来实现对它们的访问,这么数据库包括关系型数据库,非关系数据库。Spring Data 是以这些数据库访问技术进行封装,提供类似适配器功能,让我可以更加简单地访问数据库。

  • Spring Data功能
  1. 提供数据与对象映射的抽象层,同一个对象可以映射为不同数据库的数据。
  2. 根据数据储存接口的方法名,自动实现数据查询。
  3. 为各个领域模型提供最基本的实现,例如像普通的增删改查功能。
  4. 可在原有的逻辑上,实现自定义的数据库操作逻辑
  • Spring Data模块

Spring Data JPA :该模块提供了基本的数据操作功能,可减少数据访问层的开发工作量。

Spring Data MongoDB:使用该模块可轻松操作MongoDB

Spring Data Redis:使用该模块可操作Redis数据库。

2.利用SpringData JPA ,hibernate访问MySQL

  • 简单demo

配置文件 yml:

server:port: 8081
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost/springdatausername: rootpassword: 123456type: org.apache.commons.dbcp2.BasicDataSourcetomcat:max-idle: 10   # 设置最大等待连接数量,设0为没有限制max-active: 50  # 最大连接活动数max-wait: 10000 # 最大等待秒数 单位ms 超过时间会报错误信息initial-size: 5 # 数据库连接池初始化连接数

实体类(hibernate方式):

@Entity
@Table(name = "person")
public class Person implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer pid;private String name;private Integer age;private String message;省略get和set方法
}

实现JpaRepository<Person,Integer>接口

public interface PersonRepository extends JpaRepository<Person,Integer> {
}

服务层:

@Service
public class PersonService {@Autowiredprivate PersonRepository personRepository;public List<Person> getPersons(){List<Person> personList=personRepository.findAll();return personList;}public Person save(String name){Person p=new Person();p.setName(name);p.setAge(21);p.setMessage("message");Person person=personRepository.save(p);return person;}
}

控制器:

@RestController
public class PersonController {@Autowiredprivate PersonService personService;@RequestMapping(value = "/getAll",method = RequestMethod.GET)public List<Person> getPersons(){List<Person> personList=personService.getPersons();return personList;}@RequestMapping("/addOne/{name}")public Person save(@PathVariable("name") String name){Person person=personService.save(name);return person;}
}
  • 通过方法名查询

前面的Spring帮我们生成的代理类,虽然可以完成很多工作,但在实际应用开发时,不可避免要实现自己的逻辑存储逻辑。

public interface PersonRepository extends JpaRepository<Person,Integer>,PersonRepositoryCustom {// from person where name = ?List <Person> name(String name);// from person where name = ? and age =?List <Person> findByNameAndAge(String name,Integer age);}

  • 自定义数据存储逻辑
//如果说以上的方法名也无法满足查询要求,可以编写原生的sql语句
@Query(value = "select name from person where  pid=?1",nativeQuery = true)
public String findNameById(Integer pid) ;
//非原生
@Query(value = "select p.name from Person where p.age=?1",nativeQuery = true)
public String findNameByAge(Integer age) ;

3.Spring Data JPA 访问Redis

  • 添加依赖
<!--引入Spring Data Redis-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.1.5.RELEASE</version>
</dependency>
  • 创建实体类
@RedisHash("PersonRedis")
public class PersonRedis implements Serializable {@Idprivate Integer pid;@Indexed //为该字段建立索引private String name;private Integer age;

省略了set,get方法

}

  • 定义接口
public interface PersonRepositoryRedis extends CrudRepository<PersonRedis,String> {//数据访问接口继承了CrudRepository,同样不需要任何的实现。//方法名的查询支持 And Or Is,Equals Top First等List<PersonRedis> findByName(String name);
}
  • 服务层访问
@Service
public class PersonRedisService {@Autowiredprivate PersonRepositoryRedis repositoryRedis;public List<PersonRedis> getPersons(){Iterable<PersonRedis> persons=repositoryRedis.findAll();List<PersonRedis> datas=new ArrayList<PersonRedis>();for (Iterator<PersonRedis> it=persons.iterator();it.hasNext();){PersonRedis person=it.next();datas.add(person);}return datas;}public PersonRedis save(){PersonRedis personRedis=new PersonRedis();personRedis.setPid(1);personRedis.setName("redis");personRedis.setAge(21);return personRedis;}
}
  • 控制器调用
//查询Redis缓存数据库
@RequestMapping("/saveOne")
public PersonRedis save(){PersonRedis personRedis= personRedisService.save();return personRedis;
}

//此外还可以自定义Redis数据存储逻辑

SpringCloud(part10)Spring Data 与JPA,MongoDB,Redis相关推荐

  1. spring data使用操作mongodb数据库 springboot

    在IDEA里面使用新建一个maven项目, 项目的结构是如图所示:(注意:springboot 项目中所有的组件必须位于application同级或者子包下才会被扫描到,不然就会报上面的错!) 导入相 ...

  2. 干货|一文读懂 Spring Data Jpa!

    有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...

  3. 终于有人把Spring Data JPA 讲明白了!

    01 什么是JPA? JPA的全称是 Java Persistence API , 中文的字面意思就是Java 的持久层 API , JPA 就是定义了一系列标准,让实体类和数据库中的表建立一个对应的 ...

  4. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  5. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  6. hql实例 jpa_SpringBoot学习笔记九:Spring Data Jpa的使用

    Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口 ...

  7. Spring Data JPA - 参考文档-3

    参考文档 4. JPA存储库 本章将指出JPA对知识库的支持.这建立在使用Spring Data Repositories中解释的核心存储库支持上.所以要确保你对这里解释的基本概念有一个很好的理解. ...

  8. Spring Data 什么是Spring Data 理解

    介绍 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特​​殊特性. 它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和 ...

  9. Spring Data

    目录 SpringData 开篇介绍 什么要用Spring Data(面试题) Spring Data特性和模块介绍 Spring Data介绍 Spring Data 主要模块 各模块使用率 Spr ...

  10. 使用PostgreSQL使用Spring Boot和JPA构建基本应用

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 每个不平 ...

最新文章

  1. data lab 1(暂时只放题目)
  2. 栈----迷宫(Maze)
  3. Keras学习代码—github官网examples
  4. Hadoop Yarn容量调度器特点和分配算法介绍
  5. 你必须了解Spring的生态
  6. 如何在C#中使用反射获取集合元素类型
  7. Illustrator 教程,如何在 Illustrator 中锁定、分组和隐藏内容?
  8. Java多线程300毫秒_Java多线程小程序(输出每个线程的毫秒级时间)-Go语言中文社区...
  9. Silverlight入门
  10. 《商务与经济统计》学习笔记(一)---数据与统计资料
  11. mysql中文表头转为英文字名_中文名字转换英文名字
  12. 基于html的项目的选题报告,团队项目-选题报告
  13. 计算机芯片的形成和发展,计算机中将cpu集成在一块芯片上所形成的元器件是什么...
  14. 参考《机器学习实战》高清中文PDF+高清英文PDF+源代码
  15. 你了解函数调用过程吗?
  16. linux中apache与tomcat如何使用
  17. MySQL中利用经纬度计算两点之间的距离
  18. 网站另类推广玩法心得
  19. PTA---换硬币 (20 分)
  20. 通过存档数据和视频图像处理估计地铁留守乘客

热门文章

  1. 常用测试软件01——串口调试软件
  2. 苹果待处理订单要多久_一个订单管理系统帮你轻松应对复杂的生产订单管理
  3. BZOJ 1189 [HNOI2007]紧急疏散evacuate 二分+最大流
  4. 回归中的相关度和R平方值
  5. Ubuntu 15.10 x64 安装 Android SDK
  6. ICCV 2015 B-CNN细粒度分类
  7. Entry name ‘firebase-abt.properties‘ collided
  8. 数据湖统一存储在 OPPO 的实践
  9. css的盒子模型与定位机制解读随记
  10. 学习笔记-SNN用STDP法的MNIST数据集识别代码深入阅读