当前位置: 首页 > news >正文

网站规划的解释分类目录采用的是什么编目

网站规划的解释,分类目录采用的是什么编目,用视频做背景的网站,嵌入式软件工程师前景文章目录 问题处理PostgreSQL排序相关JPA相关介绍 问题 我们项目使用Spring Boot构建,使用JHipster生成业务代码,包含基础的增删改查代码使用PostgreSQL作为业务数据库,使用自动生成的JPA构建数据更新语查询在查询某个实体类的列表时&#x…

文章目录

    • 问题
    • 处理
    • PostgreSQL排序相关
    • JPA相关介绍

问题

  • 我们项目使用Spring Boot构建,使用JHipster生成业务代码,包含基础的增删改查代码
  • 使用PostgreSQL作为业务数据库,使用自动生成的JPA构建数据更新语查询
  • 在查询某个实体类的列表时,没有指定排序字段,查询返回按照添加顺序倒序返回,这样也符合我们的需求
  • 在修改了某个实体后,发现它在列表里的顺序变动了。顺序变动,没有固定排序,会对客户使用系统造成困惑
  • 一开始以为是在查询时加了修改时间倒序,查看代码后发现,没有更新时间字段,查询时也没有加排序字段
  • 这里放一段查询代码示例:
		Specification<AreaConfig> specification = (Specification<AreaConfig>) (root, query, cb) ->{List<Predicate> predicateList = new ArrayList<>();Join<AreaConfig, SmartIntersection> join = root.join("smartIntersection", JoinType.LEFT);predicateList.add(cb.equal(join.get("id").as(Long.class), smartIntersection.getId()));Predicate[] pre = new Predicate[predicateList.size()];pre = predicateList.toArray(pre);return query.where(pre).getRestriction();};return areaConfigRepository.findAll(specification);

处理

  • 查阅文档之后知晓:使用SELECT语句查询表中的数据时,PostgreSQL不确保按照一定的顺序返回结果
  • 这就要求,查询时,如果想要每次都按照一定顺序返回,就要指定排序字段
  • 一种写法时,在调用Repository查询方法(如.findAll)时传递参数指定Sort,代码示例如下:
        Specification<GreenWaveRouteConfig> specification = (Specification<GreenWaveRouteConfig>) (root, query, cb) ->{List<Predicate> predicateList = new ArrayList<>();Join<GreenWaveRouteConfig, GreenWaveRoute> join = root.join("greenWaveRoute", JoinType.LEFT);predicateList.add(cb.equal(join.get("id").as(Long.class), routeId));Predicate[] pre = new Predicate[predicateList.size()];pre = predicateList.toArray(pre);return query.where(pre).getRestriction();};return greenWaveRouteConfigRepository.findAll(specification, Sort.by("index"));
  • 另一种写法是,在specification里使用query.orderBy指定排序
        Specification<SignalManualControlLog> specification = (root, query, cb) ->{List<Predicate> predicateList = new ArrayList<>();if (intersectionId != null) {predicateList.add(cb.equal(root.get("intersectionId").as(Long.class), intersectionId));}//时间倒序query.orderBy(cb.desc(root.get("opTime")));Predicate[] pre = new Predicate[predicateList.size()];pre = predicateList.toArray(pre);return query.where(pre).getRestriction();};List<SignalManualControlLog> controlLogs = manualControlLogRepository.findAll(specification);

PostgreSQL排序相关

  • 在一般情况下,PostgreSQL查询的结果集会按照指定的排序规则返回。如果你使用了ORDER BY子句,那么查询结果会按照该子句指定的排序规则返回。
  • 然而,在某些情况下,PostgreSQL返回结果可能不是按照期望的顺序。这通常是由于数据的物理存储方式、索引使用、并行查询或查询优化器等因素导致的。如果数据表上没有合适的索引或统计信息,PostgreSQL可能会选择不同的访问路径,导致结果的顺序与预期不符。
  • 为了确保结果按照指定的顺序返回,你可以使用ORDER BY子句明确指定排序规则。另外,你还可以考虑使用适当的索引或统计信息来帮助PostgreSQL优化查询执行计划,以确保结果按照预期的顺序返回。
  • 此外,PostgreSQL也提供了一些查询提示和指令,比如ORDER BY子句中的ORDER BY ... USING,以及SET命令中的random_page_cost等,可以用来影响PostgreSQL查询优化器的行为,以确保结果按照一定的顺序返回。
  • 总的来说,虽然在一般情况下PostgreSQL会按照指定的排序规则返回结果,但是在一些特殊情况下可能会出现结果顺序不符合预期的情况。因此,在编写查询语句时,应该使用ORDER BY子句来明确指定排序规则,以确保结果的顺序是可预测的。

JPA相关介绍

  • JPA(Java Persistence API)是一种用于管理Java应用程序中持久化数据的API。它为开发人员提供了一种方便的方法来在数据库中存储、检索和管理对象。在使用JPA的过程中,开发人员经常需要执行各种类型的查询来检索数据。以下是一些常见的JPA查询介绍:

    1. JPQL(Java Persistence Query Language)查询:JPQL是一种面向对象的查询语言,类似于SQL,但是针对实体对象进行查询。它使用实体类和其属性名称而不是表名和列名来执行查询。开发人员可以使用JPQL来执行复杂的查询操作,如连接查询、聚合函数、条件过滤等。
TypedQuery<Customer> query = entityManager.createQuery("SELECT c FROM Customer c WHERE c.age > 18", Customer.class);
List<Customer> customers = query.getResultList();
    1. 命名查询:JPA还允许开发人员定义命名查询,以便在需要时轻松地引用和重用它们。开发人员可以在实体类上使用@NamedQuery注解来定义命名查询,然后在代码中使用实体管理器的createNamedQuery方法执行该命名查询。
@NamedQuery(name="Customer.findAllAdults", query="SELECT c FROM Customer c WHERE c.age > 18")
public class Customer {//...
}TypedQuery<Customer> query = entityManager.createNamedQuery("Customer.findAllAdults", Customer.class);
List<Customer> customers = query.getResultList();
    1. Criteria API查询:JPA还提供了Criteria API,它允许开发人员使用类型安全的查询构建器来动态地构建查询。Criteria API可以用于构建复杂的查询,而不需要编写任何字符串形式的查询语句。
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Customer> query = cb.createQuery(Customer.class);
Root<Customer> root = query.from(Customer.class);
query.select(root).where(cb.greaterThan(root.get("age"), 18));
List<Customer> customers = entityManager.createQuery(query).getResultList();
  • 除了上述介绍的查询方式外,JPA还支持原生SQL查询、存储过程调用等其他查询方式。开发人员可以根据具体的业务需求选择适合的查询方式来操作持久化数据。
http://www.yayakq.cn/news/178905/

相关文章:

  • 利用jsp做网站phpcms v9 实现网站搜索
  • 鄂尔多斯网站制作 建设网站建设捌金手指花总四
  • 企业为什么要建网站凡客设计
  • 怎么查看一个网站是谁做的wordpress插件免费吗
  • 网站安全等级评审在哪里做织梦添加网站名称添加新变量
  • 苏州专业网站建设公司公司网站上线
  • 这么做网站家居企业网站建设教程
  • 建造电商网站如何在手机上做广告
  • 优化门户网站建设西安搜建站科技网站
  • 美工外包网站响应式网站建设公司'
  • 网站建设的运营计划书蚌埠网站优化
  • 做的网站一直刷新wordpress 视频文件夹
  • 亚马逊品牌备案网站怎么做怎么看一个网站的cms
  • 云主机 网站指南便宜的购物网站排名
  • 典当行网站策划网站制作有限公司
  • it美工做网站无锡新区网站制作
  • 丹阳网站友情链接网址
  • 嘉兴网站排名优化费用WordPress表白墙主题
  • 福州网站建设报价微信小程序模板开发
  • 青浦区网站建设公司什么网站发布建设标准
  • 各大网站搜索引擎微信小商店怎么开通
  • cuteftp 备份网站网站色哦优化8888
  • 商务网站建设详细步骤如何做网站流量报告
  • 恢复原来的网站重庆皇华建设集团有限公司网站
  • it网站开发公司北京驾校网站建设
  • 网站建设备案图片公司网站域名的设计
  • 沈阳蓝德网站建设阿帕奇网站搭建
  • 中英文双语网站建设济南模板网站
  • 怎样做网站收广告费所有购物软件
  • 手机做ppt的免费模板下载网站阿里云企业邮箱怎么申请