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# webApi返回Excel数据流 || 使用Excel数据流的方式下载Excel

    背景: 在前端无法生成特殊的excel表格,或操作复杂的时候会通过后台进行生成excel.但是服务器的资源也非常宝贵,所以通过数据流的方式就可以实现:不在服务器存储的情况下,使前端成功下载excel文 ...

  2. jq 下载带上token设置form表单并且兼容ie8

    先在publice公共资源里面或者自己随便写一个函数自己记得调用就行 先加载form表单组件 /** * 添加form下载组件 * @param {*} wrp */ appendFormDownlo ...

  3. 小程序的文件结构及配置 小程序配置 app.json

    程序包含一个描述整体程序的 app 和多个描述各自页面的 page. 一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 文件 必填 作用 app.js 是 小程序逻辑-小程序入口文件 a ...

  4. minos 2.3 中断虚拟化——GICv2 管理

    首发公号:Rand_cs 硬件肯定需要软件配合,这一节就来实战 GICv2 首先准备好 GICv2 手册:https://developer.arm.com/documentation/ihi0048 ...

  5. LeetCode 297. Serialize and Deserialize Binary Tree 二叉树的序列化与反序列化(C++/Java)

    题目: Serialization is the process of converting a data structure or object into a sequence of bits so ...

  6. 字符数组转换及数字求和 java8 lambda表达式 demo

    public static void main(String[] args) throws IllegalAccessException { //字符串转换为数字且每个加上100,输出. String ...

  7. mysql case when使用

    ## mysql case when使用 SELECT order_no,case is_test when 0 then '否'when 1 then '是'end as '是否测试' from ` ...

  8. HTML元素如何按字符串原格式输出文本换行制表符信息

    只需给相应HTML元素添加 style="white-space: pre"

  9. Xilinux PS与PL交互::Linux-App读写REG

    Xilinux PS与PL交互::Linux-App读写REG 背景 PL配置好有关的硬件,PS端做验证. 设计方案:针对REG地址,不使用设备树配置. 遇到的问题:暂无. 验证目的 验证PL-PS的 ...

  10. power bi 如何删除敏感度标签

    经验证,此方法不够彻底,我的office excel打开后还是要添加敏感度标签,即使我把敏感度标签删掉也不行. 当我把创建敏感度标签的管理员账户删掉之后,虽然打开excel还是会显示敏感度标签,但是已 ...