`

74. Spring Data JPA方法定义规范【从零开始学Spring Boot】

阅读更多

 

【视频&交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

       事情的起因:有人问过我们这个这个问题:为什么我利用Spring data jpa写的方法没有按照我想要的情况进行执行呢?我记得当时只是告诉他你你先看看Spring Data的命名规则吧。所以在这一小节把Spring Data方法定义的规则简单说明下。

 

1)简单条件查询

       简单条件查询:查询某一个实体类或者集合。

       按照Spring Data的规范的规范,查询方法以find | read | get 开头,涉及查询条件时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。

       例如:定义一个Entity实体类:

class People{

       private String firstName;

       private String lastName;

}

       以上使用and条件查询时,应这样写:

findByLastNameAndFirstName(String lastName,String firstName); 

注意:条件的属性名称与个数要与参数的位置与个数一一对应 

       那么接下里我们看看Spring Data支持的关键字。

      

2)支持的关键字

       直接在接口中定义查询方法,如果是符合规范的,可以不用写实现,目前支持的关键字写法如下:



 

 

 

 

       好了这些关键词具体大家可以自己去实战下。接下里我觉得有必要说说Spring Data查询方法解析流程。

 

3)查询方法解析流程

       假如我们创建如下的查询:findByUserDepUuid(),框架在解析该方法时,首先剔除findBy,然后对剩下的属性进行解析,假设查询实体为Doc

  -- 先判断userDepUuid (根据POJOPlain Ordinary Java Object简单java对象,实际就是普通java bean)规范,首字母变为小写。)是否是查询实体的一个属性,如果根据该属性进行查询;如果没有该属性,继续第二步。

  -- 从右往左截取第一个大写字母开头的字符串(此处为Uuid),然后检查剩下的字符串是否为查询实体的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,则重复第二步,继续从右往左截取;最后假设 user 为查询实体的一个属性。

 -- 接着处理剩下部分(DepUuid),先判断 user 所对应的类型是否有depUuid属性,如果有,则表示该方法最终是根据 “ Doc.user.depUuid” 的取值进行查询;否则继续按照步骤 2 的规则从右往左截取,最终表示根据 “Doc.user.dep.uuid” 的值进行查询。

 -- 可能会存在一种特殊情况,比如 Doc包含一个 user 的属性,也有一个 userDep 属性,此时会存在混淆。可以明确在属性之间加上 "_" 以显式表达意图,比如 "findByUser_DepUuid()" 或者 "findByUserDep_uuid()"

  -- 特殊的参数: 还可以直接在方法的参数上加入分页或排序的参数,比如:

Page<UserModel> findByName(String name, Pageable pageable);

List<UserModel> findByName(String name, Sort sort);

 

4)结束语

 

       Spring Data确实博大精深,没有实战过,真的是没法很灵活在项目中进行使用。在实际使用过程中,理论知道了但是还是会碰到很多的坑,这个就只能是熟能生巧了。

Spring Boot 系列博客】

视频&交流平台

à Spring Boot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

历史章节

 

第一章 快速开始

1、Spring Boot之Hello World

2、Spring Boot之Hello World访问404

 

第二章 Spring Boot之JSON

1、spring boot返回json数据

2、Spring Boot完美使用FastJson解析JSON数据

 

第三章 Spring Boot热部署

1、Spring Boot热部署(springloader)

2、springboot + devtools(热部署)

 

第四章 Spring Boot数据库

1、Spring Boot JPA/Hibernate/Spring Data概念

2、Spring Boot JPA-Hibernate

3、Spring Boot Spring Data JPA介绍

4、Spring Boot JdbcTemplate

5、Spring Boot集成MyBatis

 

第五章 web开发

1、全局异常捕捉

2、配置server信息

3、spring boot使用thymeleaf

4、Spring Boot 使用freemarker

5、Spring Boot添加JSP支持

 

第六章 定时任务

1、Spring Boot定时任务

2、Spring Boot 定时任务升级篇(动态修改cron参数)

3、Spring Boot 定时任务升级篇(动态添加修改删除定时任务)

4、Spring Boot 定时任务升级篇(集群/分布式下的定时任务说明)

5、Spring Boot Quartz介绍

6、Spring Boot Quartz在Java Project中使用

7、Spring Boot 集成Quartz普通使用

8、Spring Boot 集成Quartz升级版

9、Spring Boot 集成Quartz二次升级版

10、Spring Boot 集成Quartz-Job如何自动注入Spring容器托管的对象

 

第七章 Spring Boot MyBatis升级篇

1、Spring Boot MyBatis升级篇-注解

2、Spring Boot MyBatis升级篇-注解-自增ID

3、Spring Boot MyBatis升级篇-注解-增删改查

4、Spring Boot MyBatis升级篇-注解-分页查询

5、Spring Boot MyBatis升级篇-注解-分页PageHelper不生效

6、Spring Boot MyBatis升级篇-注解- mybatic insert异常:BindingException: Parameter 'name' not found

7、Spring Boot MyBatis升级篇-注解- #和$符号特别篇

8、Spring Boot MyBatis升级篇-注解-@Result

9、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>

10、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider

11、Spring Boot MyBatis升级篇-注解-动态SQL-参数问题

12、Spring Boot MyBatis升级篇-注解-特别篇:@MapperScan和@Mapper

13、Spring Boot MyBatis升级篇-XML

14、Spring Boot MyBatis升级篇-XML-自增ID

15、Spring Boot MyBatis升级篇-XML-增删改查

16、Spring Boot MyBatis升级篇-XML-分页查询

17、Spring Boot MyBatis升级篇-XML-分页PageHelper不生效

18、Spring Boot MyBatis升级篇-XML-动态SQL(if test)

19、Spring Boot MyBatis升级篇-XML-注解-初尝试

20、Spring Boot MyBatis升级篇- pagehelper替换为pagehelper-spring-boot-starter

 

第八章 Spring Boot 知识点1

1、Spring Boot 拦截器HandlerInterceptor

2、Spring Boot启动加载数据CommandLineRunner

3、Spring Boot环境变量读取和属性对象的绑定

4、Spring Boot使用自定义的properties

5、Spring Boot使用自定义的properties

6、Spring Boot使用@SpringBootApplication

7、Spring Boot 监控和管理生产环境

 

第十章 Spring Boot 打包部署

1、Spring Boot打包部署((提供Linux的sh文件))

 

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

 

3、Spring Boot日志-log4j2

 

更多查看博客: http://412887952-qq-com.iteye.com/

 

 

  • 大小: 19.2 KB
  • 大小: 26.8 KB
分享到:
评论
4 楼 林祥纤 2016-09-06  
zhongxunking 写道
感谢博主,以前只会用findBy...And...,其他的都是自己去写sql,还不知道有这么多关键字可以用。一个题外话,spring data和mybatis可不可以集成?


不可以.
3 楼 zhongxunking 2016-09-05  
感谢博主,以前只会用findBy...And...,其他的都是自己去写sql,还不知道有这么多关键字可以用。一个题外话,spring data和mybatis可不可以集成?
2 楼 林祥纤 2016-08-08  
LinApex 写道
不用它,不灵活


有人喜欢就有人不喜欢,很正常。
1 楼 LinApex 2016-08-08  
不用它,不灵活

相关推荐

    8. 使用JPA保存数据【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列中,我们将探讨如何使用Java Persistence API (JPA) 来保存数据。JPA是Java平台上的一个标准,它为对象关系映射(ORM)提供了一种规范,使得开发人员可以使用Java对象来操作数据库...

    7. JPA - Hibernate【从零开始学Spring Boot】

    作为从零开始学习Spring Boot的一部分,理解如何有效地利用这些技术进行数据库操作至关重要。 首先,JPA是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它为开发人员提供了一种统一的API,简化了...

    1. [视频]spring boot起步之Hello World【从零开始学Spring Boot】

    在本节中,我们将深入探讨"Spring Boot起步之Hello World"这一主题,这是学习Spring Boot框架的典型入门教程。Spring Boot是由Pivotal团队开发的一个框架,它旨在简化Spring应用程序的初始搭建以及开发过程,通过...

    从零开始学spring boot

    《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...

    spring-boot实战PDF 完整版和随书源码.7z

    4. Starter POMs:Spring Boot通过一系列的Starter POMs(父POM)来简化Maven配置,每个Starter POM都对应一个特定的功能领域,如Web、Data JPA等。 5. Actuator:提供了一组监控和管理应用的端点,可以实时查看...

    9. 使用JdbcTemplate【从零开始学Spring Boot】

    在这种情况下,Spring Data JPA或MyBatis可能是更好的选择。 总结来说,本节主要介绍了如何在Spring Boot项目中使用JdbcTemplate进行数据库操作,包括设置依赖、配置数据源、注入JdbcTemplate以及执行SQL查询、更新...

    从零开始学Spring Boot

    《从零开始学Spring Boot》是一套全面且深入的学习教程,专为想要掌握Spring Boot技术的初学者设计。Spring Boot是Java开发中的一个热门框架,它简化了Spring应用的初始搭建以及开发过程,使得开发者可以更快地构建...

    详尽的Spring2.0学习提纲

    1. 创建Spring项目:从零开始构建一个简单的Spring MVC应用,涉及配置、控制器、视图和数据库访问。 2. 高级特性实践:探索Spring Security、Spring WebSocket、Spring Boot等进阶主题,提升项目开发能力。 通过...

    Springboot入门到精通完整版.pdf

    Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化Spring应用程序的初始设置和配置。Spring Boot 并非意图替代 Spring 框架,而是为开发者提供一个快速构建、部署和管理现代Java应用程序的平台。通过...

    Springboot入门到精通(超详细文档)

    通过添加相应的依赖,如`spring-boot-starter-data-jpa`,Spring Boot可以自动配置JPA和Hiberate,让你轻松地操作数据库。你只需编写Repository接口,Spring Boot会自动实现这些接口,提供CRUD操作。 对于Web开发,...

    spring学习.zip

    4. **《Spring Boot开发实战.pdf》**:此书是Spring Boot的实战指南,不仅深入讲解了Spring Boot的基本用法,还涵盖了Spring Security、Spring Data JPA等扩展模块,帮助读者从零开始构建基于Spring Boot的应用程序...

    Java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).7z

    总的来说,这个项目为学习者提供了一个从零开始到完整部署的实战案例,涵盖了Spring Boot应用的开发、数据库设计、前后端交互等多个关键知识点。通过分析和实践这个项目,可以深入理解Spring Boot的工作原理,提高...

    架构探险_从零开始学spring

    《架构探险:从零开始学Spring》是一本深入浅出的Spring框架学习指南,作者通过细致入微的讲解,带领读者逐步掌握Spring的核心概念和技术。Spring作为Java领域最流行的轻量级框架,其广泛应用于企业级应用开发,是...

    2020最新-百战程序员-SpringData视频教程从入门到精通(高薪必备技能).txt

    - **在线课程**:如“百战程序员”的Spring Data视频教程,适合从零开始学习到进阶。 - **社区论坛**:Stack Overflow、GitHub等社区可以获取最新的技术动态和解决实际遇到的问题。 综上所述,Spring Data是现代...

    Spring Boot 系列实战合集.zip

    1. 创建第一个 Spring Boot 项目:从零开始创建一个简单的 "Hello, World!" 应用,理解 Maven 或 Gradle 项目的结构。 2. 使用 Spring Boot 的自动配置:探究如何利用自动配置来简化配置文件。 3. 开发 RESTful API...

    java-spring-fast-base_java_springboot_swagger_jpaspring_micromet

    【标题】"java-spring-fast-...通过这个模板,开发者可以节省时间,专注于实现具体业务需求,而不用从零开始配置整个环境。同时,由于集成了Swagger和Micrometer,开发者可以更加方便地测试API并了解应用的运行状况。

    [E文]Spring Boot 2 Recipes

    综上所述,《Spring Boot 2 Recipes》这本书不仅是一本实用的技术手册,还是一本引导读者从零开始到精通 Spring Boot 2 的宝贵资源。无论是新手还是有经验的开发者,都能从中获得有价值的指导和启发。

    毕业设计项目:构建基于Spring Boot的在线书店系统

    内容概要:本文档详细介绍了如何从零开始构建一个基于Spring Boot框架的在线书店系统。该系统集成了Spring MVC、Spring Data JPA、Thymeleaf模板引擎等技术,涵盖了用户注册登录、商品浏览搜索、购物车管理和订单...

    Spring boot基础demo

    Spring Boot是Java开发中的一个流行框架,用于简化Spring应用程序的创建和配置过程。它通过提供预配置的starter pom或gradle...这个demo是一个实践型的学习资源,帮助开发者从零开始接触并掌握Spring Boot的基础知识。

    从0写一个问卷调查APP后端spring boot基础框架

    以下将详细介绍如何从零开始构建这个框架。 1. **环境配置**: - 首先,确保安装了JDK,并将版本设置为1.8或以上,因为Spring Boot 2.x版本主要支持Java 8及以上。 - 安装Maven或Gradle作为项目构建工具,Spring ...

Global site tag (gtag.js) - Google Analytics