spring JPA 实体创建 分页排序 时间比较

SpringBoot使用Spring JPA入门详解,分页,排序,自定义SQL 整体的一个步骤(我们将讲解,Jpa里面的一些常用方法,以及怎么在jpa中定义自己的SQL) 1.创建连接池对象 2.根据表编写实体类型(@Entity、@Table、@id、@Column映射描述) 3.定义JPA Repository接口(继承JpaRepository、PagingAndSortingRepository或CrudRepository等) 4.定义启动类(@SpringBoot... 阅读详情

实体:::

@Entity
@Table(name = "msp_cms_banner")
public class Banner extends TenantEntity {
    
    /** 序列号 */
    private static final long serialVersionUID = 791983617347082516L;
    
    /** 存在头部标题栏 */
    public static final int HAS_TITLE_BAR = 1;
    
    /** 用户id */
    @Id
    @GeneratedValue(generator = "UIDGenerator")
    @GenericGenerator(name = "UIDGenerator", strategy = "com.comtop.msp.framework.persistence.UIDGenerator")
    @Column(length = 40)
    private String id;
    
    /** 标题 */
    @Column(length = 200)
    private String title;
    
    /** 内容简介 */
    @Column(length = 200)
    private String profile;
    
    /** 图片地址 */
    @Column(length = 500)
    private String imageUrl;
    
    /** 跳转地址 */
    @Column(length = 500)
    private String url;
    
    @Column(length=10)
    private int seq;
    
    /** 发布时间  */
    @Temporal(TemporalType.DATE)
    @Column(name = "publishDate", nullable = false, length = 10)
    private Date publishDate;
    
    /** 下架时间  */
    @Temporal(TemporalType.DATE)
    @Column(name = "downDate", nullable = false, length = 10)
    private Date downDate;
    
    /** 跳转地址的页面是否存在头部标题栏,默认 0 不存在 */
    @Column(columnDefinition = " INT DEFAULT 0 ")
    private int titleBarState;
    
    /** 类型,
    @Column(columnDefinition = " INT DEFAULT 0 ")
    private int type;



service层::关键代码

 /**
     * 根据关键词查询所有记录
     * 
     * @param keyword 关键词
     * @param keyword2 
     * @return 结果集合
     */
    public Page<Banner> findByKeyword(final String type,final String keyword, int pageNumber,int pageSize) {
        // 过滤条件
        Specification<Banner> spec = new Specification<Banner>() {
            
            @Override
            public Predicate toPredicate(Root<Banner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                List<Predicate> predicates = Lists.newArrayList();
                if (StringUtils.isNotEmpty(keyword)) {
                    Predicate predicateT = builder.like(root.<String> get("title"), "%/" + keyword + "%", '/');
                    Predicate predicateP = builder.like(root.<String> get("profile"), "%/" + keyword + "%", '/');
                    Predicate predicateI = builder.like(root.<String> get("imageUrl"), "%/" + keyword + "%", '/');
                    Predicate predicateU = builder.like(root.<String> get("url"), "%/" + keyword + "%", '/');
                    predicates.add(builder.or(predicateT, predicateP, predicateI, predicateU));
                }
                predicates.add(builder.equal(root.<String> get("delFlag"), Banner.DEL_FLAG_NORMAL));
                
                if(StringUtils.isNotBlank(type)){
                int parseInt = Integer.parseInt(type);
                if(1==parseInt){
                //1:过期
                predicates.add(builder.greaterThanOrEqualTo(root.<Date>get("downDate"), new Date()));
               
                }//2:未过期
                else if(2==parseInt){
                // date conditon >= 当前时间
                predicates.add(builder.lessThanOrEqualTo(root.<Date>get("downDate"), new Date()));
                }
                }
                
                if (StringUtils.isNotBlank(UserUtils.getTenantId())) {
                    predicates.add(builder.equal(root.<String> get("tenantId"), UserUtils.getTenantId()));
                }
                // 将所有条件用 and 联合起来
                if (predicates.size() > 0) {
                    return builder.and(predicates.toArray(new Predicate[predicates.size()]));
                }
                return builder.conjunction();
            }
        };
        List<Order> orderList = new ArrayList<Order>();
        orderList.add(new Order(Direction.DESC, "seq"));
        orderList.add(new Order(Direction.DESC, "publishDate"));
        PageRequest pageRequest = new PageRequest(pageNumber - 1, pageSize, new Sort(orderList));
        return bannerDao.findAll(spec,pageRequest);
    }





如何使用 Spring Boot 实现分页和排序? 通过 Spring Data JPA 提供的和PageableSort接口,我们可以非常方便地实现分页和排序功能。Spring Boot 让分页和排序操作变得更加简洁和高效,减少了开发中的繁琐代码。Pageable主要用于分页,可以创建分页请求。Sort主要用于排序,用于指定排序字段和排序方式。使用方法可以轻松获取分页数据。这种方式使得我们能够在 Spring Boot 项目中非常便捷地实现数据的分页查询和排序功能。… … 阅读详情

相关推荐

Java各种Specification

里面包含以下文档: The Java Language Specification Third Edition.pdf The Java Language Specification Java SE 8 Edition.pdf The Java Language Specifation Java SE 9 Edition.pdf The Java Virtual Machine Specification Java SE 7 Edition.pdf The Java Virtual Machine Specification Java SE 8 Edition.pdf The Java Language Specification Java SE 7 Edition.pdf

开发过程中JPA Specification的应用

JPA Specification为什么需要Specification应用场景JPA Specification实现复杂查询JPA多条件、多表查询Spring Data Jpa 简单模糊查询 Specification算是JPA里面比较灵活的查询规范了,方便实现复杂的查询方式。 为什么需要Specification Spring-Data JPA 本身支持了比较简单的查询方式,也就是根据属性名成结合一些规范编写查询方法,例如,一个Customer对象有name属性,那么如果想要实现根据name来查询,只需要

weixin_41438466的博客 1340

“华为”云桌面系统声音比较小,如何调大?

调整操作系统声音 开启云桌面,登录账户之后,进入操作系统,鼠标左键点击右下角的声音图标,把声音调到最大(如下图); 可以考虑使用浏览器在线听音乐,确定声音的音量! 如果只是耳麦声音小,可以鼠标右键点击声音图标,选择录音设备(R),如下图: 点击“录音设备(R)”后进入,鼠标右键点击“麦克风”选择属性,将侦听级别调至最大,确定! 调整华为云终端声音(软设置) 将鼠标移至桌面的顶端中间位置,打开如下图的样式图标,鼠标左键点击“主页”; 点击“主页”之后,将回到云桌面的终端操作界面,

shunchang的专栏 2336

java spring boot jpa Specification 查询 日期区间

java spring boot jpa Specification 查询 日期区间

风.foxwho(神秘狐) 2577

复旦微FMQL45T900平台RGMII网口调试实战:从PHY寄存器读取异常到链路建立

本文详细记录了复旦微FMQL45T900平台RGMII网口调试的全过程,重点解决了PHY寄存器读取异常问题。通过电压配置调整、时序优化和硬件信号完整性检查,最终成功建立网络链路。文章提供了实用的调试经验和解决方案,适合嵌入式开发人员参考。

weixin_29193359的博客 288

Leaflet 加载天地图完整配置指南:从插件修改到无限缩放(附源码)

本文详细介绍了Leaflet与天地图深度集成的完整配置指南,包括插件修改、无限缩放实现及源码示例。通过解析天地图服务的WMTS协议、双投影支持和密钥机制,帮助开发者突破缩放级别限制,优化地图应用性能,适用于Web地图开发和高精度GIS系统。

weixin_27180827的博客 441

Spring data jpa Specification 条件查询 时间段查询 -笔记

jpa中最好用的时间段查询方法 @Override public Page<泛型> findRecordList(int couponDetailId, int pageNum, int pageSize, String startTime, String endTime) { try {         //排序规则和分页 Sort...

一起进步的博客 8218

华为CNA VRM搭建(使用vmware worfstartion搭建)

华为CNA和VRM在 vmware workstation安装使用

weixin_70595351的博客 1810

jpa获取数据库当前时间,在JPA查询中比较当前日期时间

I want to compare the date in database with current dateTime in JPA query :captureLimitDate < currentDateTimemy requirement is as follows :database.captureLimitDate : 04/07/2012 19:03:00currentDate...

weixin_39637711的博客 1819

Zotero内存占用与存储优化:从根源解决卡顿与空间不足

文献管理软件在学术工作中扮演着重要角色,其核心原理是通过数据库管理元数据与附件文件,实现文献的快速检索与组织。然而,随着文献库规模增长,软件的资源管理机制可能面临挑战,尤其是内存占用与存储空间优化问题。从技术价值看,高效的附件管理策略不仅能提升软件响应速度,还能确保数据安全与可移植性。在实际应用场景中,研究者常遇到软件卡顿、存储目录膨胀等痛点,这通常与附件存储模式、缓存机制及数据库维护有关。本文聚焦于Zotero这一主流工具,针对其内存占用高、文件无法删除等常见问题,提供了外置存储、链接附件、数据库维护等系

weixin_34209060的博客 454

28_Spring AI 干货笔记之 OpenAI 聊天功能

本文详细介绍了在Spring AI框架中集成OpenAI聊天模型的方法。内容涵盖API密钥配置、通过starter依赖启用自动配置、连接与模型参数的详细设置,并重点说明了运行时选项的动态覆盖机制。文章还深入讲解了多模态处理(图像与音频)、结构化输出、函数调用等高级功能,提供了示例控制器和手动配置指南,并讨论了与OpenAI兼容服务器的适配与推理模型思维链的获取。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1656

spring data jpa比较方法的命名

subjectAuthsDao.findByUserIdAndSubjectIdAndExpiringTimeLessThanAndAuthTimeGreaterThan(user.getId(), subject.getId(),date,date); 打印结果: subjectaut0_.user_id=? and subjectaut0_.subject_id=? and subjectau...

远行的博客 257

卸载python弹框报错:Could not set file security for file ‘D:\Config.Msi\abd5.rbf‘. Error: 5. Verify...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 6482

Spring Data JPA分页与排序

1、认识JPA的分页接口和排序类 在项目的开发中,需要经常对数据表进行分页和排序查询。下面将介绍如何使用Spring Data JPA对数据进行分页和排序。 1.1 分页排序接口 PagingAndSortingRepository PagingAndSortingRepository 接口继承自CrudRepository 接口提供的分页和排序方法。其关键代码如下: @NoRepos...

pan_junbiao的博客 1万+

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 661

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 数据 03:Spring Data JPA 分页与排序(Pageable+Sort)

本文介绍了Spring Data JPA中分页与排序的实现方法。通过Pageable和Sort接口,可以轻松实现高效的数据查询功能。文章首先概述了Spring Data JPA的核心优势,包括简化Repository层、方法命名约定和类型安全等特性。然后详细讲解了Pageable接口的分页参数和Sort接口的排序规则定义方式,并提供了示例代码。最后展示了如何在Repository层实现分页查询,包括基本分页方法、自定义查询方法以及结合@Query注解的复杂查询。这些功能为Java Web开发中的数据展示提供

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring Data JPA 中的分页和排序

大多数情况下,来自数据库的结果集可能会让人不知所措。它可能会让人不知所措,以至于系统崩溃,因为它们无法在一次传递中处理那么多数据。因此,将这些大记录分解为可管理的块总是一个好主意。这正是分页的意义所在。分页是将大内容拆分为称为“页面”的较小编号块以使整个数据更易于处理的过程。排序不需要任何介绍或定义。这是一种订购一组类似项目的方法。在我们的例子中,我们将坚持从数据库中对记录进行排序。您可能已经看到了分页和排序。以谷歌为例。查询的结果为每页 10 个链接。

allway2的博客 1975

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

排序的艺术:Spring Data JPA 如何玩转关联实体排序 (. 运算符的奥秘) ✨

摘要:本文深入探讨了Spring Data JPA中对关联实体进行排序的高级技巧。通过分析"点运算符(.)"的用法,解决了按关联实体属性(如管理员昵称)排序的常见需求。文章包含完整实现流程:从业务需求到Sort对象构建,再到Pageable封装。特别介绍了通用PageWithSearch方法的设计,通过prefix参数灵活处理关联路径。时序图展示了前端参数如何转换为SQL的完整过程,并揭示了JPA自动处理JOIN和排序的机制。最后解析了点运算符在JPA属性路径中的核心作用,为开发者提供了

小丁的博客 1073

Spring Data JPA 分页排序进化论:从单字段到 toPageableWithMultiSort 的优雅之道

本文分享了Spring Data JPA分页排序功能的演进过程,从最初仅支持单字段排序的简单实现,逐步重构为支持复杂多字段组合排序的通用解决方案。通过对比toPageableWithDefault和toPageableWithMultiSort两个版本,展示了如何利用Sort.Order对象封装独立排序规则,实现如"先按序号降序NULLS LAST,再按创建时间降序"等复杂业务需求。最终方案具有高度可复用性,使Service层代码更加清晰直观,同时体现了领域对象设计和关注点分离等优秀实践

小丁的博客 1453

spring-data-jpa的简单使用、动态sql、分页、排序

spring-data-jpa的简单使用、动态sql、分页、排序spring data jpa介绍一、常用的注解1.@Entity2.@Table3.@Id4.@GeneratedValue5.@IdClass6.@Basic7.@Transient8.@Column9.@Temporal二、多表设计多表关联关系注解1)@JoinColumn 定义外键关联的字段名称2)@OneToOne 一对一关联关系3)@OneToMany 一对多 & @ManyToOne 多对一4)@OrderBy 关联查询的

qq_43548590的博客 4805

JPA 条件 排序 分页 查询

Sort sort = new Sort(Sort.Direction.ASC, "id"); Pageable pageable = new PageRequest(0, 1, sort); List<RongProductSort> rongProductSortList=this.productSortRepository.findById(id...

殇之何伤的博客 1324

spring data jpa使用详解

使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。 前言: Spring data简介: Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data 包含多个子项目: Commons - 提供共享

牛奋lch 5万+

springboot使用JPA分页pageable分页;mybatis用pagehelper分页。分享两种分页方法

首先pagehelper分页,确实很好用也很方便,但是jpa用pagehelper分页很难,反正我还没有找到很好用的措施,因为jpa有自己的分页工具类pageable。 所以jpa分页用pageable,mybatis分页用pagehelper,以下分享两种方法!! 1.JPA分页(使用pageable) Controller控制层 package com.gxuwz.late.controller; import com.gxuwz.late.bean.Record; import com.g

GQ_666的博客 4502

【JAVA】Spring Data JPA

Spring Data JPA

weixin_37559642的博客 1107

使用Spring Data JPA进行分页与排序

一、导读 如果一次性加载成千上万的列表数据,在网页上显示将十分的耗时,用户体验不好。所以处理较大数据查询结果展现的时候,分页查询是必不可少的。分页查询必然伴随着一定的排序规则,否则分页数据的状态很难控制,导致用户可能在不同的页看到同一条数据。那么,本文的主要内容就是给大家介绍一下,如何使用Spring Data JPA进行分页与排序。 二、实体定义 我们使用一个简单的实体定义:Article...

三方 463

Spring Data JPA使用自定义查询进行分页

在本教程中,我将向您展示如何使用带有自定义查询的 Spring 数据分页来实现 Spring 引导分页。

allway2的博客 3204
上一篇: 文本编辑器的使用和七牛图片上传
下一篇: velocity 轻量级模板 接收实体在前端展示
Nirvana--
博客等级 码龄10年 7粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值