spring-data-jpa初步认识
什么是spring data jpa?
spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。
Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。如图:

接口约定命名规则:

实例:


springboot集成spring data jpa只需两步:
第一步:导入maven坐标

第二步:yml配置文件中配置jpa信息

jpa的分页实现
/**
* 分页查询敏感词列表
* @param paramsDataLog
* @param pageable
* @return
*/
public Page<SensitiveWords> findSensitiveWordsListByPage(SensitiveWordsParams sensitiveWordsParams, Pageable pageable) { return sensitiveWordsRepository.findAll(new Specification<SensitiveWords>() {
@Override
public Predicate toPredicate(Root<SensitiveWords> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>();
/* 敏感词查询条件 */
if (StringUtils.isNotEmpty(sensitiveWordsParams.getSensitiveWord())) {
String s = sensitiveWordsParams.getSensitiveWord().replace(" ","");
predicates.add(cb.like(root.get("sensitiveWord"), "%"+s+"%"));
}
/* 创建人查询条件 */
if (StringUtils.isNotEmpty(sensitiveWordsParams.getCreateUserName())) {
predicates.add(cb.like(root.get("createUserName"), "%"+sensitiveWordsParams.getCreateUserName()+"%"));
}
/* 创建时间查询条件 */
if (StringUtils.isNotEmpty(sensitiveWordsParams.getBeginCreateTimeStr())) {
//大于或等于开始时间
predicates.add(cb.greaterThanOrEqualTo(root.get("createTime").as(String.class), sensitiveWordsParams.getBeginCreateTimeStr()));
}
if (StringUtils.isNotEmpty(sensitiveWordsParams.getEndCreateTimeStr())) {
//小于或等于结束时间
predicates.add(cb.lessThanOrEqualTo(root.get("createTime").as(String.class), sensitiveWordsParams.getEndCreateTimeStr()+" 23:59:59"));
}
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
}
}, pageable);
}
jpa分页分两种。
第一种简单的 ,可以用简单的类字段属性来分页,但是太鸡肋,比如不为空,时间间隔这些就无能为力了。
//分页
@Test
public void contextLoads() {
BS_460 bs_460 = new BS_460();
bs_460.setCI16("47e5");
Example<BS_460> example = Example.of(bs_460);
Page<BS_460> all = bs_460Dao.findAll(example,PageRequest.of(0, 4));
List<BS_460> content = all.getContent();
content.forEach(e-> System.out.println(e));
}
参考博客:https://www.cnblogs.com/smiler/p/9210255.html
spring-data-jpa初步认识的更多相关文章
- javaweb各种框架组合案例(四):maven+spring+springMVC+spring data jpa(hibernate)【失败案例】
一.失败案例 1. 控制台报错信息 严重: Exception sending context initialized event to listener instance of class org. ...
- JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文带你厘清个中曲直,给你个选择SpringDataJPA的理由!
序言 Spring Data JPA作为Spring Data中对于关系型数据库支持的一种框架技术,属于ORM的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度. 本文档隶属于< ...
- Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA
大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...
- 快速搭建springmvc+spring data jpa工程
一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...
- spring boot(五):spring data jpa的使用
在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...
- 转:使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...
- 深入浅出学Spring Data JPA
第一章:Spring Data JPA入门 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map ...
- spring data jpa 调用存储过程
网上这方面的例子不是很多,研究了一下,列出几个调用的方法. 假如我们有一个mysql的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `plus1in ...
- Spring Data JPA 学习记录1 -- 单向1:N关联的一些问题
开新坑 开新坑了(笑)....公司项目使用的是Spring Data JPA做持久化框架....学习了一段时间以后发现了一点值得注意的小问题.....与大家分享 主要是针对1:N单向关联产生的一系列问 ...
- Spring Boot with Spring Data JPA (1) - Concept
What's Spring Data JPA? According to Pivotal, Spring Data JPA, part of the larger Spring Data family ...
随机推荐
- java mail session使用Properties的clone方法
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreem ...
- Sub-Processes and Call Activities
https://www.activiti.org/userguide/#bpmnCallActivity http://www.flowable.org/docs/userguide/index.ht ...
- wamp升级php5.3.10到5.4.31版本
wamp升级php5.3.10到5.4.31版本 1. 停止WAMP服务器. 2. 去网站windows.php.net 下载php-5.4.31-nts-Win32-VC9-x86.zip. 不 ...
- JavaScript中的Date对象在IOS中的“大坑”
在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象. 但是在IOS5版本里面的Safari解释ne ...
- linux系统安全审计简单设置
应用安全-安全审计日志目录 /var/log/audit/audit.log [root@localhost audit]# cd /etc/audit/[root@localhost audit] ...
- java中线程安全和非线程安全的集合
线程安全 非线程安全 Collection Vector ArrayList.LinkedList HashSet.TreeSet Map HashTable HashMap.TreeMap 字符串 ...
- 13函数式编程&Stream流
13.1常用的函数式接口总结 接口名称 方法名称 抽象/默认 延迟/终结 方法描述 Supplier get 抽象 终结 供给型接口,无参有返回值,主要用于 Consumer accept 抽象 ...
- BZOJ2803[Poi2012]Prefixuffix——hash
题目描述 对于两个串S1.S2,如果能够将S1的一个后缀移动到开头后变成S2,就称S1和S2循环相同.例如串ababba和串abbaab是循环相同的.给出一个长度为n的串S,求满足下面条件的最大的L: ...
- BZOJ2662[BeiJing wc2012]冻结——分层图最短路
题目描述 “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„” 在这个愿望被实现以后的世界里,人们享受着魔法卡片(Spe ...
- POI插入图片至Excel使用固定的长宽
使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格 ...