Spring Data之Example<>
简单CRUD之Example动态查询
简单介绍 (部分口水话,部分来自网络,代码永远自产)
使用过Spring全家桶的各位大佬应该都知道,Spring Data这个是Spring对持久层框架的封装,比如Spring Data Redis、Spring Data Mongo等,今天我们来学习一下他的动态查询Example
Example的官方介绍
Example是一个按照实列查询的技术,称为QBE,他允许我们创建动态的查询条件,持久层的框架我们常用的MyBatis的通用Mapper,Hibenate(好久没用过了),都支持这种映射关系,所以Spring Data也必须得支持这种提高效率的功能,
他可以实现我们不用写数据库的sql语句就可以查询到我们想要的数据,太复杂的除外...
Example 的组成
条件实列:第一个当然就是我们封装条件的实列了,一般由前端发过来,我们可对其封装
ExampleMatcher:对于条件实列中某些字段的匹配条件的设置,比如包含,以...开始/结束等
Example:由条件实列和ExampleMatcher组成,用于查询
适用范围
使用一组静态或者动态条件插叙数据库
频繁重构域对象,而不必担心破坏现有查询
独立于地测光输出储存IP工作(不明白)
按列查询(QBE)的限制
不支持嵌套或者分组的属性约束
仅支持字符串的开始/包含/结束/正则以及其他属性的精确匹配,也就是说对String类型的查询支持力度大
自产代码
上面这段代码我在其中的注释已经写的很明白,
我们对条件实列封装了是哪个条件,有两个是精确匹配,有一个单独设置了包含查询,
最后我们还对查询结果进行分页查询,条件匹配器的的API
而且在1.8y引入了Lamda表达式后,还进行了代码简化:
简单总结
对于Example可以快速构建一一个动态查询,并且根据Pageable可以快速实现分页插叙功能
Exampled对字符串支持的查询条件颇多,但对于其他类型,仅支持精确匹配
如果想要复杂一点的查询,我们还得继承另一个接口,用另一个API,今天先写到这儿,后面用到再写
Spring Data之Example<>的更多相关文章
- 快速搭建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 ...
- MongoDB分组汇总操作,及Spring data mongo的实现
转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...
- 转:使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...
- 一步步学习 Spring Data 系列之JPA(一)
引入: Spring Data是SpringSource基金会下的一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服 ...
- 一步步学习 Spring Data 系列之JPA(二)
继上一篇文章对Spring Data JPA更深( )一步剖析. 上一篇只是简单的介绍了Spring Data JPA的简单使用,而往往在项目中这一点功能并不能满足我们的需求.这是当然的,在业务中查询 ...
- 深入浅出学Spring Data JPA
第一章:Spring Data JPA入门 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map ...
- 记录分享公司Spring data相关配置
起因 公司Spring Data相关的配置还是有点意思的,不过蛮复杂的...XML很多...我不太喜欢强行记住....所以我打算记录一下配置的大致思路和结构,以后可能会有用.... 总体结构 总体结构 ...
- spring data jpa 调用存储过程
网上这方面的例子不是很多,研究了一下,列出几个调用的方法. 假如我们有一个mysql的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `plus1in ...
- Spring Data JPA 学习记录1 -- 单向1:N关联的一些问题
开新坑 开新坑了(笑)....公司项目使用的是Spring Data JPA做持久化框架....学习了一段时间以后发现了一点值得注意的小问题.....与大家分享 主要是针对1:N单向关联产生的一系列问 ...
随机推荐
- python3 获取当前路径及os.path.dirname的使用
方法一: import sys,os os.getcwd()#然后就可以看见结果了 方法二: import os os.path.dirname(os.path.realpath('__file__' ...
- 125K低频唤醒芯片SI393可替代AS3933,GS3933
2020年即将推出性能最出色的15–150kHz频率范围.3通道低频唤醒接收器,且具备自动天线调谐功能. SI393是15–150kHz频率范围.3通道低频唤醒接收器,且具备自动天线调谐功能,在软硬件 ...
- MySQL不支持事务处理的解决方法
MySQL数据库默认的存储引擎类型是MyISAM,这种存储引擎类型不支持事务处理. 在MySQL中,只有InnoDB存储引擎类型的数据表才能支持事务处理. 因此,如果想让MySQL支持事务处理,只要将 ...
- python 数据的存储
数据的存储 思考:为什么使用计算机?存储数据,计算数据 思考:数据存在哪里?数据存储在内存里 思考:数据怎么在内存里存储的?首先弄明白怎么存储数字 1010.5“sunck is a good man ...
- Jmeter实现百分比业务比例
Jmeter实现百分比业务比例 相较于LoadRunner,jmeter在复杂场景方式貌似略有欠缺.前一段时间,想实现一个功能,如有两个采样器a与b,a采样器与b采样器被执行的概率分别为1/4与3 ...
- 接口使用Http发送post请求工具类
HttpClientKit import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamR ...
- 【leetcode】958. Check Completeness of a Binary Tree
题目如下: Given a binary tree, determine if it is a complete binary tree. Definition of a complete binar ...
- H5新属性 contenteditable
contenteditable 属性规定元素内容是否可编辑 <div contenteditable style="width: 100px;height:100px"> ...
- Dart编程实例 - Dynamic 关键字
Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...
- go构造函数
go构造函数 结构体没有构造函数,你可以创建一个函数返回一个相应类型的实例代替(类似一个工厂): func NewSaiyan(name string, power int) *Saiyan { re ...



