国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

門(mén)戶(hù)網(wǎng)站開(kāi)發(fā)過(guò)程百度霸屏推廣多少錢(qián)一個(gè)月

門(mén)戶(hù)網(wǎng)站開(kāi)發(fā)過(guò)程,百度霸屏推廣多少錢(qián)一個(gè)月,美食網(wǎng)站php源碼,網(wǎng)站建站公文章目錄 問(wèn)題處理PostgreSQL排序相關(guān)JPA相關(guān)介紹 問(wèn)題 我們項(xiàng)目使用Spring Boot構(gòu)建,使用JHipster生成業(yè)務(wù)代碼,包含基礎(chǔ)的增刪改查代碼使用PostgreSQL作為業(yè)務(wù)數(shù)據(jù)庫(kù),使用自動(dòng)生成的JPA構(gòu)建數(shù)據(jù)更新語(yǔ)查詢(xún)?cè)诓樵?xún)某個(gè)實(shí)體類(lèi)的列表時(shí)&#x…

文章目錄

    • 問(wèn)題
    • 處理
    • PostgreSQL排序相關(guān)
    • JPA相關(guān)介紹

問(wèn)題

  • 我們項(xiàng)目使用Spring Boot構(gòu)建,使用JHipster生成業(yè)務(wù)代碼,包含基礎(chǔ)的增刪改查代碼
  • 使用PostgreSQL作為業(yè)務(wù)數(shù)據(jù)庫(kù),使用自動(dòng)生成的JPA構(gòu)建數(shù)據(jù)更新語(yǔ)查詢(xún)
  • 在查詢(xún)某個(gè)實(shí)體類(lèi)的列表時(shí),沒(méi)有指定排序字段,查詢(xún)返回按照添加順序倒序返回,這樣也符合我們的需求
  • 在修改了某個(gè)實(shí)體后,發(fā)現(xiàn)它在列表里的順序變動(dòng)了。順序變動(dòng),沒(méi)有固定排序,會(huì)對(duì)客戶(hù)使用系統(tǒng)造成困惑
  • 一開(kāi)始以為是在查詢(xún)時(shí)加了修改時(shí)間倒序,查看代碼后發(fā)現(xiàn),沒(méi)有更新時(shí)間字段,查詢(xún)時(shí)也沒(méi)有加排序字段
  • 這里放一段查詢(xún)代碼示例:
		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語(yǔ)句查詢(xún)表中的數(shù)據(jù)時(shí),PostgreSQL不確保按照一定的順序返回結(jié)果
  • 這就要求,查詢(xún)時(shí),如果想要每次都按照一定順序返回,就要指定排序字段
  • 一種寫(xiě)法時(shí),在調(diào)用Repository查詢(xún)方法(如.findAll)時(shí)傳遞參數(shù)指定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"));
  • 另一種寫(xiě)法是,在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));}//時(shí)間倒序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排序相關(guān)

  • 在一般情況下,PostgreSQL查詢(xún)的結(jié)果集會(huì)按照指定的排序規(guī)則返回。如果你使用了ORDER BY子句,那么查詢(xún)結(jié)果會(huì)按照該子句指定的排序規(guī)則返回。
  • 然而,在某些情況下,PostgreSQL返回結(jié)果可能不是按照期望的順序。這通常是由于數(shù)據(jù)的物理存儲(chǔ)方式、索引使用、并行查詢(xún)或查詢(xún)優(yōu)化器等因素導(dǎo)致的。如果數(shù)據(jù)表上沒(méi)有合適的索引或統(tǒng)計(jì)信息,PostgreSQL可能會(huì)選擇不同的訪問(wèn)路徑,導(dǎo)致結(jié)果的順序與預(yù)期不符。
  • 為了確保結(jié)果按照指定的順序返回,你可以使用ORDER BY子句明確指定排序規(guī)則。另外,你還可以考慮使用適當(dāng)?shù)乃饕蚪y(tǒng)計(jì)信息來(lái)幫助PostgreSQL優(yōu)化查詢(xún)執(zhí)行計(jì)劃,以確保結(jié)果按照預(yù)期的順序返回。
  • 此外,PostgreSQL也提供了一些查詢(xún)提示和指令,比如ORDER BY子句中的ORDER BY ... USING,以及SET命令中的random_page_cost等,可以用來(lái)影響PostgreSQL查詢(xún)優(yōu)化器的行為,以確保結(jié)果按照一定的順序返回。
  • 總的來(lái)說(shuō),雖然在一般情況下PostgreSQL會(huì)按照指定的排序規(guī)則返回結(jié)果,但是在一些特殊情況下可能會(huì)出現(xiàn)結(jié)果順序不符合預(yù)期的情況。因此,在編寫(xiě)查詢(xún)語(yǔ)句時(shí),應(yīng)該使用ORDER BY子句來(lái)明確指定排序規(guī)則,以確保結(jié)果的順序是可預(yù)測(cè)的。

JPA相關(guān)介紹

  • JPA(Java Persistence API)是一種用于管理Java應(yīng)用程序中持久化數(shù)據(jù)的API。它為開(kāi)發(fā)人員提供了一種方便的方法來(lái)在數(shù)據(jù)庫(kù)中存儲(chǔ)、檢索和管理對(duì)象。在使用JPA的過(guò)程中,開(kāi)發(fā)人員經(jīng)常需要執(zhí)行各種類(lèi)型的查詢(xún)來(lái)檢索數(shù)據(jù)。以下是一些常見(jiàn)的JPA查詢(xún)介紹:

    1. JPQL(Java Persistence Query Language)查詢(xún):JPQL是一種面向?qū)ο蟮牟樵?xún)語(yǔ)言,類(lèi)似于SQL,但是針對(duì)實(shí)體對(duì)象進(jìn)行查詢(xún)。它使用實(shí)體類(lèi)和其屬性名稱(chēng)而不是表名和列名來(lái)執(zhí)行查詢(xún)。開(kāi)發(fā)人員可以使用JPQL來(lái)執(zhí)行復(fù)雜的查詢(xún)操作,如連接查詢(xún)、聚合函數(shù)、條件過(guò)濾等。
TypedQuery<Customer> query = entityManager.createQuery("SELECT c FROM Customer c WHERE c.age > 18", Customer.class);
List<Customer> customers = query.getResultList();
    1. 命名查詢(xún):JPA還允許開(kāi)發(fā)人員定義命名查詢(xún),以便在需要時(shí)輕松地引用和重用它們。開(kāi)發(fā)人員可以在實(shí)體類(lèi)上使用@NamedQuery注解來(lái)定義命名查詢(xún),然后在代碼中使用實(shí)體管理器的createNamedQuery方法執(zhí)行該命名查詢(xún)。
@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查詢(xún):JPA還提供了Criteria API,它允許開(kāi)發(fā)人員使用類(lèi)型安全的查詢(xún)構(gòu)建器來(lái)動(dòng)態(tài)地構(gòu)建查詢(xún)。Criteria API可以用于構(gòu)建復(fù)雜的查詢(xún),而不需要編寫(xiě)任何字符串形式的查詢(xún)語(yǔ)句。
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();
  • 除了上述介紹的查詢(xún)方式外,JPA還支持原生SQL查詢(xún)、存儲(chǔ)過(guò)程調(diào)用等其他查詢(xún)方式。開(kāi)發(fā)人員可以根據(jù)具體的業(yè)務(wù)需求選擇適合的查詢(xún)方式來(lái)操作持久化數(shù)據(jù)。
http://aloenet.com.cn/news/47361.html

相關(guān)文章:

  • 網(wǎng)站制作推廣公司怎么優(yōu)化標(biāo)題和關(guān)鍵詞排名
  • 沈陽(yáng)網(wǎng)站建設(shè)seo優(yōu)化站內(nèi)關(guān)鍵詞排名軟件
  • 漯河做網(wǎng)站公司關(guān)鍵詞網(wǎng)站
  • 網(wǎng)站模版 免費(fèi)下載企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo)系統(tǒng)分析報(bào)告
  • wordpress外貿(mào)教程網(wǎng)站推廣和優(yōu)化的原因
  • 做投票網(wǎng)站全網(wǎng)搜索引擎優(yōu)化
  • 聊城哪兒做網(wǎng)站便宜沈陽(yáng)沈河seo網(wǎng)站排名優(yōu)化
  • 海外 推廣網(wǎng)站高級(jí)seo是什么職位
  • 紀(jì)檢網(wǎng)站建設(shè)動(dòng)態(tài)主題百度一下 你知道首頁(yè)
  • 廣州網(wǎng)站建設(shè)推廣公司上海網(wǎng)站建設(shè)公司
  • php做的網(wǎng)站如何盈利重慶seo按天收費(fèi)
  • 深圳網(wǎng)站開(kāi)發(fā)學(xué)習(xí)日本積分榜最新排名
  • 在哪些網(wǎng)站上申請(qǐng)做廣告可以在百度引擎能收到關(guān)鍵字seo網(wǎng)站推廣是什么
  • 網(wǎng)站每年多少錢(qián)怎么推廣游戲代理賺錢(qián)
  • 新聞網(wǎng)站職業(yè)技能培訓(xùn)有哪些
  • 手機(jī)網(wǎng)站后臺(tái)源碼百度店鋪怎么開(kāi)通
  • 微網(wǎng)站建設(shè)訊息百度產(chǎn)品大全入口
  • 做費(fèi)網(wǎng)站營(yíng)銷(xiāo)網(wǎng)站定制
  • 北京康迪建設(shè)監(jiān)理咨詢(xún)有限公司網(wǎng)站南京seo顧問(wèn)
  • 濰坊網(wǎng)站建設(shè)哪家好外貿(mào)平臺(tái)排名
  • 找人代做網(wǎng)站需要注意什么簡(jiǎn)述常用的網(wǎng)絡(luò)營(yíng)銷(xiāo)方法
  • 如何做網(wǎng)站地圖百度官網(wǎng)首頁(yè)官網(wǎng)
  • 網(wǎng)站支付寶怎么做的營(yíng)銷(xiāo)和銷(xiāo)售的區(qū)別在哪里
  • 佛山市品牌網(wǎng)站建設(shè)哪家好網(wǎng)站建設(shè)與營(yíng)銷(xiāo)經(jīng)驗(yàn)
  • 新開(kāi)傳奇網(wǎng)站3000ok推廣游戲賺錢(qián)的平臺(tái)
  • 陜西做網(wǎng)站社會(huì)化媒體營(yíng)銷(xiāo)
  • 深圳網(wǎng)站建設(shè)sumaart精準(zhǔn)粉絲引流推廣
  • eclipse做網(wǎng)站表格百度競(jìng)價(jià)推廣教程
  • 個(gè)人頁(yè)網(wǎng)址seo研究中心教程
  • 中央廣播電視總臺(tái)2024網(wǎng)絡(luò)春晚seo網(wǎng)站優(yōu)化推廣費(fèi)用