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. C# .NET HttpWebRequest 按每个(单个)请求跳过证书校验

    C# .NET HttpWebRequest 按每个(单个)请求跳过证书校验 自签名证书 HTTPS TLS . 使用.NET 4.5 新加的属性 HttpWebRequest.ServerCerti ...

  2. linux入门篇:查看系统用户信息,以及修改用户密码

    From https://blog.csdn.net/dieyong/article/details/86578472 1 用户列表文件$ cat /etc/passwd 2 用户组列表文件$ cat ...

  3. spring与设计模式之五委派模式

    一.定义 主要突出一个安排,派遣. 这个设计模式非常常见,不需要学习也能自然而然地用上. 从广义的角度出发,一个对象用另外一个对象就是委派. 二.经典实现 略. 三.spring实例代码 https: ...

  4. 安装tesserocr

    1.下载安装包 这个包不能使用pip安装 可以在这里找到适合自己的版本安装: https://github.com/simonflueckiger/tesserocr-windows_build/re ...

  5. 简单测下C++20 vector array lambda 的常数

    某天打了一下 CF,遇到了一道 https://codeforces.com/contest/1806/problem/E 这里需要卡常. 于是在 C++20(64) 下测出来了一些神奇的结果. 结果 ...

  6. socket 地址复用 SO_REUSEADDR

    背景 默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口(例如888),这时候,别的套接字就无法使用这个端口( 888 ) ref : https://blog.csdn.net/tenn ...

  7. Swin Transformer:最佳论文,准确率和性能双佳的视觉Transformer | ICCV 2021

    论文提出了经典的Vision Transormer模型Swin Transformer,能够构建层级特征提高任务准确率,而且其计算复杂度经过各种加速设计,能够与输入图片大小成线性关系.从实验结果来看, ...

  8. javaApi,mapreduce,awk,scala四种方式实现词频统计

    awk方式实现词频统计: 方式一: vi wordcount.awk { for (i = 1; i <=NF;i++) //NF 表示的是浏览记录的域的个数 freq[$i]++ } END{ ...

  9. IOS浏览器返回刷新页面

    $(function () { var isPageHide = false; window.addEventListener('pageshow', function () { if (isPage ...

  10. ubuntu 同时安装python2 和 python3 版本的 gunicorn

    前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...