DAO面向SpringData操作

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,

包括非关系数据库、Map-Reduce 框架、云数据服务等等;

另外也包含对关系数据库的访问支持。

Spring Data 包含多个子项目:

– Spring Data Commons

– Spring Data JPA

– Spring Data KeyValue

– Spring Data LDAP

– Spring Data MongoDB

– Spring Data Gemfire

– Spring Data REST

– Spring Data Redis

– Spring Data for Apache Cassandra

– Spring Data for Apache Solr

– Spring Data Couchbase (community module)

– Spring Data Elasticsearch (community module)

– Spring Data Neo4j (community module)

- 持久操作支持

- 大量的封装模板

- 各种对象映射

1、SpringData特点

SpringData为我们提供使用统一的API来对数据访问层进行操作;

这主要是Spring DataCommons项目来实现的。

Spring Data Commons让我们在使用关系型或者非关系型数据访问技术时都基于Spring提供的统一标准,

标准包含了CRUD(创建、获取、更新、删除)、查询、排序和分页的相关操作。

2、统一的Repository接口

统一接口:

Repository<T, ID extends Serializable>

基于乐观锁机制:

RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>>

基本CRUD操作:

CrudRepository<T, ID extends Serializable>

基本CRUD及分页

PagingAndSortingRepository<T, ID extends Serializable>

3、提供数据访问模板类 xxxTemplate;

如:MongoTemplate、RedisTemplate等

4、JPA与Spring Data

1)、JpaRepository基本功能

  编写接口继承JpaRepository既有crud及分页等基本功能

2)、定义符合规范的方法命名

  在接口中只需要声明符合规范的方法,即拥有对应的功能

3)、@Query自定义查询,定制查询SQL

4)、Specifications查询(Spring Data JPA支持JPA2.0的Criteria查询)

持久层结构示意图:


整合JPA【Java持久化API】

操作步骤:

1、引入spring-boot-starter-data-jpa

2、配置文件打印SQL语句

3、创建Entity标注JPA注解

4、创建Repository接口继承JpaRepository

5、测试方法

导入依赖组件

SpringDataJPA是对JPA规范的再封装,所以用SpringDataJPA学习JPA是一样的

配置访问参数

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///mybatis?serveTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

编写对应的JPA规范实体类

package cn.dai.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; import javax.persistence.*; /**
* @author ArkD42
* @file SpringBoot with JPA
* @create 2020 - 06 - 01 - 15:35
*/
@Entity
@Table
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Integer user_id; @Column
private String user_name; @Column
private String user_password;
}

编写Dao接口

【SpringData只要这个接口继承了Jpa持久化接口,并且注入了ORM实体类和主键类型,就可以了】

package cn.dai.repo;

import cn.dai.entity.User;

import org.springframework.data.jpa.repository.JpaRepository;

/**
* @author ArkD42
* @file SpringBoot with JPA
* @create 2020 - 06 - 01 - 15:43
*/
public interface UserRepository extends JpaRepository<User,Integer> { }

然后配置其他非主要设置

#JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

测试类

被害惨了,getOne方法不行,findOne方法没有,

还是弹幕说的findById().get()才起效的

package cn.dai.controller;

import cn.dai.entity.User;
import cn.dai.repo.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; /**
* @author ArkD42
* @file SpringBoot with JPA
* @create 2020 - 06 - 01 - 16:06
*/
@RestController
public class UserController { @Autowired
UserRepository userRepository; @GetMapping("/user/get_user_by_id/{user_id}")
public User getUser(@PathVariable("user_id") Integer id){
return userRepository.findById(id).get(); // 老版本是findOne
} @GetMapping("/user/add_user")
public User saveUser(User user){
return userRepository.save(user); //打印一下保存的User
} }

【SpringBoot】16 数据访问P4 整合JPA的更多相关文章

  1. java框架之SpringBoot(9)-数据访问及整合MyBatis

    简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...

  2. SpringBoot数据访问之整合mybatis注解版

    SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...

  3. 六、SpringBoot与数据访问

    六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...

  4. SpringBoot之数据访问和事务-专题三

    SpringBoot之数据访问和事务-专题三 四.数据访问 4.1.springboot整合使用JdbcTemplate 4.1.1 pom文件引入 <parent> <groupI ...

  5. SpringBoot的数据访问

    一.JDBC方式 引入starter. <dependency> <groupId>org.springframework.boot</groupId> <a ...

  6. SpringBoot 之数据访问

    1. Spring Boot 与 JDBC 默认使用 org.apache.tomcat.jdbc.pool.DataSource 数据源; // application.yml spring: da ...

  7. SpringBoot(九) -- SpringBoot与数据访问

    一.简介 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,xx ...

  8. 20、Springboot 与数据访问(JDBC/自动配置)

    简介: 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入 各种xxxTemplate,x ...

  9. 10分钟进阶SpringBoot - 05. 数据访问之JDBC(附加源码分析+代码下载)

    10分钟进阶SpringBoot - 05. 数据访问之JDBC 代码下载:https://github.com/Jackson0714/study-spring-boot.git 一.JDBC是什么 ...

  10. Spring Boot数据访问之整合Mybatis

    在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...

随机推荐

  1. Centos安装Redis(极速安装)

    下载 从官网找到下载文件,我下载的是redis-6.0.16.tar.gz. 安装 1. 解压文件 解压文件然后,进入解压文件夹: tar -zxvf redis-6.0.16.tar.gz cd r ...

  2. webpack处理静态资源

    像项目中字体资源是不需要进行打包处理的,可以直接的通过复制方式给打包到目标目录中 # 安装 npm i -D copy-webpack-plugin # 引入 const CopyPlugin = r ...

  3. C# .NET Dictionary 将集合key以ascii码从小到大排序

    .NET 不加参数,默认不是按ASC II 排序 .JAVA 默认是按ASC II 排序 . Array.Sort(arrKeys, string.CompareOrdinal); 按ASC II 排 ...

  4. 爬取m3u8加密视频

    import random import os import re import requests import asyncio import aiohttp import time from lxm ...

  5. javascript class 方法的this指向问题

    踩坑记录 JavaScript 的 class 里面有两种定义方法的方式 普通函数(fun1) 箭头函数(fun2) class Obj { func1() { // write some code. ...

  6. 支付宝签名和验签使用JSONObject是最优解。json字符串顺序和==符号都一致演示代码

    支付宝签名和验签使用JSONObject是最优解.json字符串顺序和==符号都一致演示代码 支付宝spi接口设计验签和返回结果加签注意点,支付宝使用JSONObject对象https://www.c ...

  7. 微信和支付宝异步回调通知IP白名单

    附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...

  8. C# .net core中如何将多张png图片合并成一个gif

    背景 我们有很多这样的序列帧: 我这边要把这些序列帧裁切最后合并成gif,以下是我裁切后的png文件: 我一开始选用的是 SixLabors.ImageSharp 这是裁切代码: using var ...

  9. spring与设计模式之四适配器模式

    一.定义 适配器模式-或者称为转接口模式,变压器模式.通过适配,可以让原来提供特定功能的对象完成另外一个标准的功能. 所以,所谓的适配应该可以这样称呼:让某些类/接口适配/转换某个标准/功能. 适配器 ...

  10. 高通参考设计中MTP与QRD

    高通参考设计中MTP与QRD 背景 之前在调试设备树的时候,看到设备树带了一个qrd的后缀,一直没搞清楚.上网找资料也好像不是我想要的. 今天查阅lk侧的代码,发现了HW_PLATFORM_HRD这个 ...