MySql數據庫列表數據分頁查詢、全文檢索API零代碼實現

      網友投稿 985 2022-05-30

      數據條件查詢和分頁

      前面文檔主要介紹了元數據配置,包括表單定義和表關系管理,以及表單數據的錄入,本文主要介紹數據查詢和分頁在crudapi中的實現。

      MySql數據庫列表數據分頁查詢、全文檢索API零代碼實現

      概要

      數據查詢主要是指按照輸入條件檢索出符合要求的數據列表,如果數據量大的情況下,需要考慮分頁。

      API為/api/business/{name},其中name為對象名稱復數形式(兼容對象名稱),查詢參數如下:

      字段1,字段2,…之間的關系為并且AND關系

      客戶customer一共錄入四條數據

      分別通過名稱、手機、郵箱、會員卡號進行查詢,請求url如下:

      /api/business/customer?offset=0&limit=10&name=劉禪&mobile=13088889999&email=liushan@crudapi.cn&membershipNo=VIP000000004

      查到客戶劉禪

      通過關鍵字“劉”對客戶表全文檢索,請求url如下:

      /api/business/customer?offset=0&limit=10&search=劉

      查到客戶劉禪和劉備,具體原理如下:表單中所啟用了“可查詢”屬性的字段最終拼接成一個全文檢索文本fullTextBody,在插入數據和更新數據的時候及時更新,這樣就可以利用mysql全文檢索功能實現關鍵字查詢, 最終轉成SQL語句如下:

      SELECT * FROM `ca_customer` WHERE ((MATCH(`fullTextBody`) AGAINST('張*' IN BOOLEAN MODE))) ORDER BY id DESC LIMIT 0, 10

      類似的,通過關鍵字“liu”對客戶表全文檢索,通過郵箱匹配,也可以查詢數據。

      定義接口條件Condition,葉子條件LeafCondition繼承Condition,組合條件CompositeCondition條件繼承Condition,CompositeCondition由多個Condition組合而成,通過AND和OR兩種運算可以實現任何形式的復雜查詢條件,這樣就利用組合模式實現了智能查詢,

      public enum OperatorTypeEnum { EQ, NE, LIKE, IN, INSELECT, SEARCH, GE, GT, LE, LT, BETWEEN }

      數據庫查詢操作符包括等于、大于、LIKE等

      @JsonPropertyOrder(alphabetic = true) @JsonIgnoreProperties(ignoreUnknown = true) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY,property = "name") @JsonSubTypes(value = { @JsonSubTypes.Type(value = CompositeCondition.class, name = "C"), @JsonSubTypes.Type(value = LeafCondition.class, name = "L") }) public interface Condition { String toQuerySql(); List toQueryValues(); }

      條件接口

      @JsonPropertyOrder(alphabetic = true) @JsonIgnoreProperties(ignoreUnknown = true) @Data public class LeafCondition implements Condition { private String name = "L"; private String columnName; @JsonProperty("operatorType") private OperatorTypeEnum operatorType; @JsonProperty("values") private List valueList = new ArrayList(); }

      葉子條件

      @JsonPropertyOrder(alphabetic = true) @JsonIgnoreProperties(ignoreUnknown = true) @Data public class CompositeCondition implements Condition { private String name = "C"; @JsonProperty("conditionType") private ConditionTypeEnum conditionType = ConditionTypeEnum.AND; @JsonProperty("conditions") private List conditionList = new ArrayList(); }

      組合條件

      Postman驗證,首先溝通mobile等于13622228888的葉子條件如下:

      { "name": "L", "columnName": "mobile" "operatorType": "EQ", "values": ["13622228888"] }

      序列化值為:

      {"name":"L","columnName":"mobile","operatorType":"EQ","values":["13622228888"]}

      通過encodeURIComponent編碼之后為:

      %7B%22name%22%3A%22L%22%2C%22columnName%22%3A%22mobile%22%2C%22operatorType%22%3A%22EQ%22%2C%22values%22%3A%5B%2213622228888%22%5D%7D

      最終查詢到客戶關羽,因為手機號滿足條件。類似的,可以構造更復雜的組合條件。

      字段選擇select

      默認情況下會選擇所有字段,select如果不指定表示所有的意思

      如果指定了字段,就查詢部分字段,比如只查詢id,name和mobile,其它字段和子表profile就不需要查詢了,這樣可以節約時間和數據大小。

      關聯表擴展expand

      子主關系中,默認只查詢主表id和name,避免主表查詢層次太深。

      如果指定expand關聯對象名稱,就查詢主表所有字段,適用不需要延時加載的場景,比如查詢客戶資料時候一起查詢客戶customer完整信息。

      小結

      本文介紹了列表查詢API所有的參數,包括智能查詢、全文檢索以及字段選擇等。crudapi系統通過配置的方式實現了對象的查詢和分頁。

      附demo演示

      本系統屬于產品級的零代碼平臺,不同于自動代碼生成器,不需要生成Controller、Service、Repository、Entity等業務代碼,程序運行起來就可以使用,真正0代碼,可以覆蓋基本的和業務無關的CRUD RESTful API。

      官網地址:https://crudapi.cn

      測試地址:https://demo.crudapi.cn/crudapi/login

      API Java MySQL Spring Boot 全文檢索

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:一個SpringMVC接口能返回JSON又能返回XML? 安排!
      下一篇:【沃土方案--制造業】長春啟璞科技信息咨詢有限公司-數字化運營管理平臺
      相關文章
      亚洲av片不卡无码久久| 亚洲av日韩av无码| 亚洲三级中文字幕| 久久精品国产69国产精品亚洲| 亚洲成?v人片天堂网无码| 亚洲人成色4444在线观看| 国产精品亚洲片在线va| 久久精品国产亚洲αv忘忧草| 亚洲国产精品白丝在线观看| 亚洲第一二三四区| 久久久久亚洲AV无码专区首JN| 国产亚洲精品a在线观看app| 亚洲精品午夜无码电影网| 亚洲中文久久精品无码| 亚洲中文字幕无码一区二区三区| 国产国拍亚洲精品福利| 国产午夜亚洲精品午夜鲁丝片 | 亚洲国产a级视频| 国产亚洲精品国产福利在线观看| 精品国产_亚洲人成在线| 国产精品亚洲天堂| 亚洲国产成人久久综合野外| 亚洲午夜国产片在线观看| 国产精品V亚洲精品V日韩精品| 亚洲精品无码成人片久久| 亚洲国产精品无码久久一线| 91嫩草私人成人亚洲影院| 亚洲午夜精品国产电影在线观看| 亚洲国产精品久久久久秋霞影院 | 亚洲国产成人久久精品99| 亚洲综合色视频在线观看| 亚洲日韩精品一区二区三区| 亚洲男人天堂av| 亚洲欧洲国产精品久久| 国产91在线|亚洲| 久久久久亚洲国产AV麻豆| 亚洲最大av无码网址| 亚洲国产精品无码专区在线观看| 亚洲性天天干天天摸| 亚洲大尺码专区影院| 亚洲人成色在线观看|