博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud的DataRest(三)
阅读量:5119 次
发布时间:2019-06-13

本文共 1687 字,大约阅读时间需要 5 分钟。

一、进阶配置定义

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

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注解来解决问题。

 

转载于:https://www.cnblogs.com/lexiaofei/p/7656306.html

你可能感兴趣的文章
PHP系统函数
查看>>
TF-卷积函数 tf.nn.conv2d 介绍
查看>>
js算法初窥04(算法模式01-递归)
查看>>
Odd-e CSD Course Day 5
查看>>
face detection and aligh
查看>>
【Win10】页面的导航效果
查看>>
saxReader的列子
查看>>
eclipse集成maven3后,创建java项目详细图解
查看>>
子页面刷新父页面
查看>>
python基础3 字符编码
查看>>
BZOJ1390 CEOI2008 Fences 凸包、Floyd最小环/DP
查看>>
【转发】Java并发编程:Lock
查看>>
(转)用AGG实现高质量图形输出(三)
查看>>
B/S----Repeater控件
查看>>
LNMP基于fastcgi实现nginx,php,mysql的分离
查看>>
mapreduce 二次排序
查看>>
PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
查看>>
[hihocoder][Offer收割]编程练习赛58
查看>>
C++11中一些新特性
查看>>
Linux常用命令
查看>>