package com.example.demo;

import com.example.entity.UserJ;
import com.example.respository.UserJRespository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.test.context.junit4.SpringRunner; import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List; @RunWith(SpringRunner.class)
@SpringBootTest
public class TestJpaCurd {
@Autowired
private UserJRespository userJRespository; @Autowired
private EntityManager entityManager; /**
* 插入或者是更新一条数据
*/
@Test
public void insertAndUpdate() {
UserJ userJ = new UserJ();
userJ.setUsername("alex222");
userJ.setEmail("wangzhilei@jd.com");
userJ.setId(1);
userJRespository.save(userJ);
} /**
* 删除一条数据
*/
@Test
public void delete() {
userJRespository.deleteById(1);
} /**
* 获取所有的数据
*
* @return
*/
@Test
public void getAll() {
List<UserJ> all = userJRespository.findAll();
for (UserJ userJ : all) {
System.out.println(userJ);
}
} /**
* 查询所有并+分页+排序
* <p>
* 从0页开始
* 用最新的PageRequest.of来分页
*/
@Test
public void getOneData() {
Sort sort = new Sort(Sort.Direction.DESC, "id");
PageRequest pageRequest = PageRequest.of(0, 1, sort);
/**
* 使用匿名内部类
* 构建查询条件
* root 代表查询的对象
* criteriaBuilder 条件封闭器,如and or like 等
* criteriaQuery 查询的条件
*/
Specification<UserJ> specification = new Specification<UserJ>() {
@Override
public Predicate toPredicate(Root<UserJ> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
// 单个条件查询
// Predicate predicate = cb.equal(root.get("email"), "sqyinchao@jd.com");
/**
* 多条件查询
*/
List<Predicate> list = new ArrayList<>();
list.add(cb.equal(root.get("email"), "sqyinchao@jd.com"));
list.add(cb.equal(root.get("email"), "wangzhilei@jd.com"));
// 这里面放的是可变参数,则可以放一个数组进去,然后给拆分 相当于js中的...符号
Predicate[] predicates = new Predicate[list.size()];
return cb.or(list.toArray(predicates));
}
};
Page<UserJ> all = userJRespository.findAll(specification, pageRequest);
for (UserJ userJ : all) {
System.out.println(userJ);
}
}
}

  

spring data jap操作的更多相关文章

  1. 使用Spring Data Redis操作Redis(集群版)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  2. spring data jpa 操作pipelinedb 的continuous view 与stream

    一. 由于pipelinedb是postgreSQL的扩展,因此相关依赖于配置都合集成postgreSQL是一样的. springboot + spring data jpa + postgreSQL ...

  3. 通过Spring Data Neo4J操作您的图形数据库

    在前面的一篇文章<图形数据库Neo4J简介>中,我们已经对其内部所使用的各种机制进行了简单地介绍.而在我们尝试对Neo4J进行大版本升级时,我发现网络上并没有任何成型的样例代码以及简介,而 ...

  4. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  5. Spring Data Solr操作solr的简单案例

    Spring Data Solr简介 虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便 ...

  6. Spring Boot使用Spring Data Redis操作Redis(单机/集群)

    说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...

  7. 使用Spring Data Redis操作Redis(单机版)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  8. Spring Data JAP 多个不是必填的查询条件处理

    简单的介绍一下使用场景,DAO层用Spring Data实现,dao 只有接口,实现类是容器启动时动态字节码生成,接口里定义方法,方法上@Query 里写JPQL查询语句. 基于以上的限制,如果对一个 ...

  9. spring data jap的使用 1

    最近一直在研究Spring Boot,今天为大家介绍下Spring Data JPA在Spring Boot中的应用,如有错误,欢迎大家指正. 先解释下什么是JPA JPA就是一个基于O/R映射的标准 ...

随机推荐

  1. 勒让德定理---阶乘中素因子p的指数

  2. 【[HNOI2015]菜肴制作】

    \(SDSC\)讲过的题,复习一下 如果用一个小根堆来维护拓扑的话显然是会不行的,因为这样求出来的是字典序最小的拓扑序,并不一定是1尽可能在前 因为字典序是贪心的,如果前面的一位能小就尽可能的小,并不 ...

  3. springmvc(5)拦截器

    1.什么是拦截器 是指通过统一的拦截从浏览器发送到服务器的请求来完成相应服务增强 2.拦截器的基本原理 可以通过配置过滤器解决乱码问题 和过滤器非常相似 3.搭建工程 注意jar包 此时的工程是完成后 ...

  4. MongoDB的角色作用(1)

    MongoDB的角色作用: 经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据 ...

  5. Gradle Goodness: Task Output Annotations Create Directory Automatically

    Gradle Goodness: Task Output Annotations Create Directory Automatically One of the great features of ...

  6. 用js写水仙花数

    ...js   //输入一个三位数,水仙花数就是个位的三次方+十为的三次方+百位的三次方之和等于本身 console.log('请输入一个三位数:'); let a = readline.questi ...

  7. ASP.Net Mvc 5 学习记录2015-9-9

    我之前一直都是学习和开发都采用ASP.Net WebForm,对MVC的一直都是一知半解,最初以为ASP.Net WebForm的N层架构就是MVC.其实N层架构设计思想是"高内聚,低耦合& ...

  8. 大专生自学iOS到找到工作的前前后后

    先做个自我介绍,我13年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了.13年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学 ...

  9. 学习笔记(2)centos7 下安装mysql

    centos7安装mysql 本文通过yum方式安装mysql 1.添加mysql yum 仓库 去mysql开发者中心(http://dev.mysql.com/downloads/repo/yum ...

  10. About Me - 关于

    0x00 简介 97年生 计算机相关专业,无线电安全攻防方向. 涉猎较多,喜欢研究无线.硬件.软件.网络.攻击.检测.防御等各类安全技术 精通较少,主要擅长的还是硬件.渗透.无线攻击方面. 现阶段在研 ...