一、进阶配置定义

二、定制显示内容和控制方法使用

1、控制显示的内容

如果想让输出显示的数据始终按我们定义的格式显示:

配置之后返回的JSON数据会按照ListApp定义的数据格式进行输出

2、屏蔽自动化方法

如:不允许使用默认的delete方法!!!

三、使用 DSL 定制查询

1、自定义查询

当创建Repository实现对象时,Spring Data检查Repository接口方法,解析方法名称,并基于被持久化对象来推测方法的目的。
Spring Data定义了一组领域特定语言(DSL),通过Repository方法的签名描述,Spring Data能知道这个方法要查找API_APP,因为我们用API_APP对JpaRepository进行了参数化。
方法名findByName确定该方法需要根据name属性相匹配来查找API_APP,而name是作为参数传递到方法中来的。
findByName()方法非常简单,Spring Data也能处理更加有意思的方法名称。

Repository方法是由一个动词、一个可选的主题(Subject)、关键词By以及一个断言所组成。
如:在findByName()这个样例中,动词是find,断言是name,主题并没有指定,暗含的主题是API_APP。

Spring Data允许在方法名中使用四种动词:get、read、find和count。
其中,动词get、read和find是同义的,这三个动词对应的Repository方法都会查询数据并返回对象。
而动词count则会返回匹配对象的数量,而不是对象本身。

在断言中,会有一个或多个限制结果的条件。每个条件必须引用一个属性,并且还可以指定一种比较操作。
如果省略比较操作符的话,那么这暗指是一种相等比较操作。
不过,我们也可以选择其他的比较操作,如:

2、大小写忽略查询

要处理String类型的属性时,如果需要忽略大小写则可以在方法签名中加入IgnoringCase,这样在
执行对比的时候就会不再考虑字符是大写还是小写。例如,要在name属性上忽略大小写,那么可以将方法签名改成如下的形式:

@RestResource(path="nameStartsWith",rel="nameStartsWith")
public List<User> findByNameStartsWithIgnoringCase(@Param("name") String name);

3、多条件查询

如果需要匹配多个添加则用And和Or连接,比如:

@RestResource(path="nameAndAge",rel="nameAndAge")
public List<User> findByNameAndAge(@Param("name")String name ,@Param("age")int age);

4、排序查询

可以在方法名称的结尾处添加OrderBy,实现结果集排序。比如可以按照User的Age降序排列

@RestResource(path="nameStartsWith",rel="nameStartsWith")
public List<User> findByNameStartsWithOrderByAgeDesc(@Param("name") String name);

这里初步体验了所能声明的方法种类,Spring Data JPA会为我们实现这些方法。现在,我们只需知道通过使用属性名和关键字构建Repository方法签名,就能让Spring Data JPA生成方法实现,完成几乎所有能够想象到的查询。

5、@QUERY查询

Spring Data这个小型的DSL依旧有其局限性,有时候通过方法名称表达预期的查询很烦琐,甚至无法实现。
如果遇到这种情形的话,Spring Data能够让我们通过@Query注解来解决问题。

SpringCloud的DataRest(三)的更多相关文章

  1. springcloud情操陶冶-springcloud config server(三)

    承接前文springcloud情操陶冶-springcloud config server(二),本文就不讲述server了,就简单阐述下client的应用 前话 config server在引入的时 ...

  2. SpringCloud教程 | 第三篇: 服务消费者(Feign)

    上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务.一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http ...

  3. SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)

    上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务. 一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Htt ...

  4. 【SpringCloud】第三篇: 服务消费者(Feign)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  5. SpringCloud IDEA 教学 (三) Eureka Client

    写在前头 本篇继续介绍基于Eureka的SpringCloud微服务搭建,回顾一下搭建过程, 第一步:建立一个服务注册中心: 第二步:建立微服务并注入到注册中心: 第三步:建立client端来访问微服 ...

  6. springcloud微服务总结三 服务客户端

    一 springcloud服务理解: dubbo中服务注册和调用都是都过注解来进行的,dubbo中在service层中调用服务是通过将@service注解改变为dubbo代码架包中的service注解 ...

  7. 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f3-feign/ 本文出自方志朋的博客 上一篇文章,讲述了如 ...

  8. 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)

    转载请标明出处: https://www.fangzhipeng.com/springcloud/2017/07/12/sc03-feign/ 本文出自方志朋的博客 最新Finchley版本请访问: ...

  9. SpringCloud的DataRest(四)restful特性展示

    一.get - list - http://10.110.20.16:8391/BusiSys/company?page=0&size=5&sort=comp_id,asc 二.pos ...

随机推荐

  1. SpringBoot(四)SpringBoot中lombok使用

    lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写 ...

  2. 二叉搜索树(Java实现)

    二叉搜索树基本操作 求树中的结点个数 判断节点是否为空 向树中插入新结点key-value 树中是否存在key 返回树中key对应的value值 先序遍历 中序遍历 后续遍历 层序遍历 求树中key最 ...

  3. C语言第六次作业--数据类型

    一.PTA实验作业 题目1,简单计算器: 1. 本题PTA提交列表 2. 设计思路 定义操作数num1,num2,结果result=0.运算符ch. 输入num1 while (ch=getchar( ...

  4. 需掌握 - JAVA算法编程题50题及答案

    [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题publi ...

  5. 笔记:Spring Cloud Feign Hystrix 配置

    在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cl ...

  6. 【Python】 迭代器&生成器

    迭代器 任何一个类,只要其实现了__iter__方法,就算是一个可迭代对象.可迭代对象的__iter__方法返回的对象是迭代器,迭代器类需要实现next方法.一般来说,实现了__iter__方法的类肯 ...

  7. Sum of xor

    Sum of xor jdoj-2160 题目大意:给你一个n,求1^2^...^n. 注释:$n<=10^{18}$. 想法:第一道异或的题.先来介绍一下什么是异或.a^b表示分别将两个数变成 ...

  8. KVM之一:安装准备(基于CentOS6.7)

    KVM 虚拟机简介: Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自 ...

  9. Laravel 中缓存驱动的速度比较

    缓存是web开发中重要的一部分,我相信很多人和我一样,经常忽略这个问题. 随着工作经验的累积,我已经意识到缓存是多么的重要,这里我通过 Scotch 来解释一下它的重要性. 通过观察发现,Scotch ...

  10. JavaOOP-继承

    继承 1.继承的概念 继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法和属性的过程.如果类B继承于类A,那么B ...