SpringData特有的查询

SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询 上一篇介绍了入门基础篇SpringDataJPA访问数据库。本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询、部分字段映射、分页等。本文尽量以简单的建模与代码进行展示操作,文章比较长,包含查询的方方面面。如果能耐心看完这篇文章,你应该能使用SpringDataJPA应对大部分的持久层开发需求。如果你需要使用到动态条件查询,请查看下一篇博客,专题介绍SpringD 阅读详情

关于如何使用SpringData和SpringData和JPA和Spring的整合,在这里我就不说了

下面就如何实现查询来说说

第一步:关于dao层如何来写,请看代码:

package org.peter.dao;

import org.peter.model.User;
import org.springframework.data.repository.Repository;

import java.util.List;

/**
 * Created by Lenovo on 2017/7/28.
 */
public interface UserDao extends Repository<User,Long>{
//    根据id查询
    User findById(Long id);
// 查询所有
    List<User> findAll();
//根据名字查询
    User findByAndUsername(String username);
// 根据姓氏查询
    List<User>findByUsernameStartsWith(String u);
// 根据姓氏和住址来查询
    List<User>findByUsernameStartingWithAndPassword(String u,String p);
// 查询名字中包含某个字人
    List<User>getUserByUsernameContains(String u);
//  根据角色来查询人员
    List<User>getUserByRoleId(Long l);
}

第二步:Service层如何实现看代码

package org.peter.service;

import org.peter.dao.UserDao;
import org.peter.model.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created by Lenovo on 2017/7/28.
 */
@Service
@Transactional
public class UserService {
    @Resource
    UserDao userDao;
    //    根据id查询
    public User findById(Long id){
        User user = userDao.findById(id);
        return user;
    }
    // 查询所有
    public List<User> findAll(){
        List<User> users = userDao.findAll();
        return users;
    }
    //根据名字查询
    public User findByUsername(String username){
        User user = userDao.findByAndUsername(username);
        return user;
    }
    // 根据姓氏查询
    public List<User> findByUsernameStartsWith(String u){
        List<User> list = userDao.findByUsernameStartsWith(u);
        return list;
    }

    // 根据姓氏和住址来查询
    public List<User>findByUsernameStartingWithAndPassword(String u,String p){
        List<User> list = userDao.findByUsernameStartingWithAndPassword(u, p);
        return list;
    }

    // 查询名字中包含某个字人
    public List<User> getUserByUsernameContains(String u) {
        List<User> list = userDao.getUserByUsernameContains(u);
        return list;
    }

    //  根据角色来查询人员
    public List<User>getUserByRoleId(Long l){
        List<User> list = userDao.getUserByRoleId(l);
        return list;
    }
}

第三步:创建main类做测试

package org.peter;

import org.junit.Test;
import org.peter.model.User;
import org.peter.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

/**
 * Created by Lenovo on 2017/7/28.
 */
public class main {

    private ClassPathXmlApplicationContext ctx;
    private UserService userService;
    {
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        userService = ctx.getBean(UserService.class);
    }

    @Test
    //    根据id查询
    public void findById(){
      User user = userService.findById(1l);
      System.out.println(user);
    }

    @Test
    // 查询所有
    public void findAll(){
        List<User> users = userService.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    //根据名字查询
    public void findByUsername(){
        User user = userService.findByUsername("沙家浜");
        System.out.println(user);
    }

    @Test
    // 根据姓氏查询
    public void findByUsernameStartsWith (){
        List<User> list = userService.findByUsernameStartsWith("张");
        for (User user : list) {
            System.out.println(user);
        }
    }

注意:SpringData的查询的时候一定要按着SpringData的规则来。

因为我在最后一个查询的时候我用到了JPA的OneToOne,所以要在原有的基础上创建一个Role的model

ElasticSearch集成SpringData史上最全查询教程 1、简单介绍 springboot 使用springdata操作es,ElasticsearchRepository使用QueryBuilder构造查询条件 2、集成es //maven集成 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch< 阅读详情

相关推荐

SpringData JPA复杂查询三:方法命名规则查询

SpringData JPA方法命名规则查询 按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。 测试一:测试方法命名规则的 查询(查询方式 精准(默认)): findBy 对象中的属性名(首字母...

qq_42041712的博客 2813

Java EE 6引入的JPA 2.0四大新特性详解

【51CTO精选译文】Java EE 5平台引入了Java持久化API(Java Persistence API,JPA),它为Java EE和Java SE应用程序提供了一个基于POJO的持久化模块。JPA处理关系数据与Java对象之间的映射,它使对象/关系(O/R)映射标准化,JPA已经被广泛采用,已经成为事实上的O/R持久化企业标准。Java EE 6带来了JPA的最新版本 — JSR

Roger★L☆M☆J★ 1201

SpringData JPA 详解(自定义查询、分页、事务控制)

简介 SpringData JPA是 JPA的一种实现,极大的简化了JPA的开发,原始JPA的开发,需要创建实体管理工厂,使用实体管理器定义各种查询进行CRUD操作,而SpringData JPA只需要通过核心接口Repository和它的子类就能很方便的操作数据库。 Repository 1. Repository:最顶层的接口,一个空的接口,统一所有的Repository类型...

z1340954953 9077

isnull nullif case

NULLIF 函数功能 通过比较表达式提供缩写的 CASE 表达式。语法 NULLIF ( exdivssion-1, exdivssion-2 )参数 exdivssion-1    要比较的表达式。exdivssion-2    要比较的表达式。用法 NULLIF 比较两个表达式的值。如果第一个表达式的值与第二个表达式的值相等,NULLIF 返回 NULL。如果第一个表达式的值不等于第二个表达式的值,或者第二个表达式为 NULL,则 NULLIF 返回第一个表达式。NULLIF 函数提供了编写某些 CA

WDYDXF的专栏 1263

SpringData利用Specification多条件查询

SpringData JPA遵循Eric Evans在Domain Driver Design一书中的规范,让你可以使用编程方式来构建多条件查询。 快速开始 关于SpringBoot与JPA的快速整合,已经在这篇文章中写的非常详细:SpringBoot整合Spring Data JPA,一些配置部分就不再赘述了,我们直接创建一个条件丰富一些的实体类做测试。 创建实体类 @Entity(name = "t_blog") @Data @AllArgsConstructor @NoArgsConstru

Java圈全能架构师的博客 662

Spring中查询

Spring中hql查询方法,spring自带的

SpringDataJpa的使用 -- 条件查询、排序查询、分页查询

SpringDataJpa的使用 -- 条件查询、排序查询、分页查询、分组查询、统计查询

十七的博客 8701

QT+QTimer+QThread实现线程内的定时任务并且和主线程进行交互

在制作qt软件时,我们经常会用到qtimer定时器以及将其在非主线程中进行使用,甚至有的时候还需要和主线程进行交互。我总结了两种用法,仅供参考。以上即为QTimer和QThread联合使用的学习记录。

u011826081的博客 5685

Spring Data JPA 查询方法那些事

Spring Data 提供了几个接口供继承使用,如 JpaRepository,另外还规定了方法查询中的关键字,即你命名的查询方法需要符合规范。 详情参考:SpringBoot整合Spring Data JPA、SpringDataJPA入门。 本篇博文详细记录Spring Data JPA查询中的那些事。 【1】方法查询 ① 只要符号命名规范的接口都可以被正常解析使用 如下所示:...

小小默:进无止境 1万+

RK3568-MIPI屏幕调试实战:LCD初始化时序解析与转换

本文详细解析RK3568平台MIPI屏幕调试中的LCD初始化时序,重点介绍DCS Write与Generic Write数据类型的转换方法,并提供厂家时序到RK格式的实战转换案例。通过理解上电初始化时序的重要性,帮助开发者快速解决屏幕不亮、花屏等常见调试问题,提升RK3568硬件开发效率。

d6e7f8g9h的博客 186

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 267

springdata jpa使用Example快速实现动态查询

Example官方介绍 Query by Example (QBE) is a user-friendly querying technique with a simple interface. It allows dynamic query creation and does not require to write queries containing field names. In fac...

一号搬砖手的博客 9万+

【传奇开心果系列】Flet框架实现的窗口屏幕居中示例自定义模板特色和实现原理深度分析

本文介绍了使用Flet框架实现窗口屏幕居中的方法。通过设置page.window.center()方法,程序会自动计算屏幕尺寸和窗口位置实现居中显示。文章建议将任务栏设为自动隐藏以获得更精确的居中效果,并详细分析了Flet窗口管理的实现原理,包括坐标计算、跨平台兼容性等技术细节。该方案提供了简洁的API调用,支持动态调整窗口位置和多显示器环境,源码可通过优快云下载。

jackchuanqi的博客 1200

SpringData MongoDB的自定义条件查询

Dao中定义下面的接口: /** * CmsPage:模型类型。 * Sting:代表的是主键ID的类型。 * @Description TODO * @Author Mr.Wu * @Date 2019/7/24 19:23 * @Version 1.0 **/ public interface CmsPageRepository extends MongoRepository&l...

weixin_42030357的博客 1668

osgEarth 球上显示地形数据库

osgEarth 球上显示地形数据库 本文展示了一种由DSM和DEM得到Osgb工程,并在osgEarth球上显示的方法。其中DSM、DOM到Osgb工程的转换由VPB(VirtualPlanetBuilder)来实现,并采用Model图层将Osgb工程在球上显示。 本文主要解决一下问题: VPB编译 VPB生成地形 地形在球上显示 目录 1 前言 2 VPB编译与使用 3 地形在osgEarth球上显示 内容 1 前言 VirtualPlanetBuilder是一个开源代码工具,用于根据

CPWWHSU的博客 2433

会计引擎:交易与核算分离的前世今生

一、为什么需要会计引擎 金融产品的设计,一如一块硬币需要兼顾两面:一面是为客户提供好的金融服务,满足客户支付结算、借贷、资产保值增值等方面的需求,并在这个过程中,以数字化的方式做好客户资产的登记,登记的载体,则是“分户”或“台账”,如客户存款户,是一种典型的分户--资金的增减变化都在一个账户中进行体现,而客户购买的银行理财,因为收益率、期限、投资标的不同,每一笔持有就形成一行记录,即为“台账”--这当然是不严谨但相对形象的表述。但是,“分户”和“台账”并没有必然的区别,以贷款为例,一些银行仍然存在所谓“

银行信息系统应用架构详解 983

SpringData jpa 实现多条件动态查询,分页功能

问题由来: 刚开始使用springdata的时候,只会用findByName这样的简单查询,这样写dao层确实非常的快,但是在我们做筛选功能的时候,这样的查询似乎很难满足我们的需求,但是都已经用上的springdata又不想再去写mybatis这样在xml里面判断是否为Null。 解决方案: 1. Example,用example可以最快速的完成支持所有参数的筛选功能,像这样的代码: @Test ...

billluffy的博客 4万+

qtcreator使用远程服务器编译代码

我并没有找到很好的windows上可以用的rsync工具,最后是装了wsl来调用rsync同步到代码后,在用ssh调用linux命令来编译的。安装wsl安装ubuntu启动wsl然后把windows里的ssh文件证书和配置复制到wsl里同时config的key目录需要改一下,这样就可以登录服务器了然后在home目录创建build.sh进行远程编译。

习惯就好zz的专栏 1380

SpringData模糊查询用法

1.方式一:controller层处理 public interface MyRepository extends Repository<TestPerson,Integer> { Slice<TestPerson> findAllByNameLike(String name,Pageable pageable); List<TestPerson...

weixin_39102174的博客 577

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringData JPA分页查询

首先我们需要知道SpringData JPA 的几个接口 其实看名字就大概懂了,也可以很方便的使用 首先我们的持久化层继承JpaRepository,相当于继承了增删改查的持久化层以及分页查询的持久化层 所以如果我们要使用分页查询 ,我们只需要直接调用 由一开始的图也可以看到Pageable的其中一个实现,直接新建一个对象传给你的持久层即可 下面是

心有猛虎,细嗅蔷薇 1415

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringData JPA利用Specification多条件查询

SpringData JPA遵循Eric Evans在Domain Driver Design一书中的规范,让你可以使用编程方式来构建多条件查询。 快速开始 关于SpringBoot与JPA的快速整合,已经在这篇文章中写的非常详细:SpringBoot整合Spring Data JPA,一些配置部分就不再赘述了,我们直接创建一个条件丰富一些的实体类做测试。 创建实体类 @Entity(name = "t_blog") @Data @AllArgsConstructor @NoArgsConstructor

天乔巴夏丶 1338

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《搜索》~ SpringData操作ElasticSearch实现高亮查询等

SpringData操作ElasticSearch实现搜索整体思路1.引入依赖2.编写yml配置3.创建实体类4-1.基本查询/添加/更新/删除4-2.复杂查询 整体思路 1.引入依赖 <!--注意:低版本的springboot 不支持springboot data--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

qq_45928727的博客 1310

SpringData JPA查询分页demo

SpringData JPA 的 PagingAndSortingRepository接口已经提供了对分页的支持,查询的时候我们只需要传入一个 org.springframework.data.domain.Pageable 接口的实现类,指定PageNumber和pageSize即可 springData包中的 PageRequest类已经实现了Pageable接口,我们可以直接使用

JacobWang's blog 676

springdata框架对es集成

Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD 外,还包括如分页、排序等一些常用的功能。

m0_71017987的博客 1949

【Spring】SpringData通用分页查询

通常情况下,SpringData是有提供相应的分页查询接口的,比如在我的另一篇博文中SpringData ES中提到的那样。但是这种方式,一般仅限于最直接的分页查询,不适用于更深层次的嵌套。比如ES中嵌在其他实体中的nested实体,本文也是为了解决这个问题才做的学习。 思路 一个最直接的想法就是查询出所需要的数据,一般是一个List,然后将List转成Page. 实现 List转Page的分页接口 package cn.edu.zucc.syx.rec.util; import org.sp.

Hombre sin rostro的博客 823
上一篇: SpringData开发步骤
下一篇: SpringData查询过程解析
@夫子慧
博客等级 码龄9年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值