当前位置: 首页 > Web前端 > vue.js

MySql数据库列表数据分页查询和全文搜索API零代码实现

时间:2023-04-01 01:48:28 vue.js

MySql数据库列表数据分页查询和全文搜索API零代码实现上篇文档主要介绍元数据配置,包括表单定义和表关系管理,以及表单数据Entry,本文主要介绍crudapi中数据查询和分页的实现。总结数据查询API数据查询主要是指根据输入的条件,检索出符合要求的数据列表。如果数据量很大,需要考虑分页。API为/api/business/{name},其中name为对象名称的复数形式(与对象名称兼容),查询参数如下:查询,默认查询所有字段和关联子表expandstring选择需要展开的关联主表。默认情况下,关联的主表字段只查询id和namesearchstring全文搜索关键字。filterstring智能查询条件是通过内置的系统字段全文索引fullTextBody实现的。格式为Condition对象Sorting方法、ASC和DESCoffsetint32分页起始位置limitint32每页数量Field1对象最后转换为mysql=operator字段2对象最后转换为mysql=operator...object最后转换为mysql=operatorfield1,field2,...之间的关系querycustomerfieldquerycustomerinput一共四条数据分别按姓名、手机、邮箱、会员卡号查询,请求url如下:https://demo.crudapi。cn/api/b...查找客户刘禅全文搜索使用关键字“刘”搜索客户表全文,请求url如下:https://demo.crudapi.cn/api/b...查找客户刘禅和刘备,具体原理如下:表单中启用了“可查询”属性的字段,最后拼接成一个全文搜索文本fullTextBody,更新在插入和更新数据的时间,这样就可以使用mysql的全文搜索功能实现关键字查询,最后转换成SQL语句如下:SELECT*FROM`ca_customer`WHERE((MATCH(`fullTextBody`)AGAINST('张*'INBOOLEANMODE)))ORDERBYidDESCLIMIT0,10类似,通过关键字“liu”搜索客户表全文,也可以通过邮箱匹配查询数据。智能查询原理定义接口条件Condition,叶子条件LeafCondition继承Condition,复合条件CompositeCondition继承Condition。该模式实现了智能查询,publicenumOperatorTypeEnum{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")})publicinterfaceCondition{StringtoQuerySql();ListtoQueryValues();}Condition接口@JsonPropertyOrder(alphabetic=true)@JsonIgnoreProperties(ignoreUnknown=true)@DatapublicclassLeafConditionimplementsCondition{privateStringname="L";私有字符串列名;@JsonProperty("操作rType")privateOperatorTypeEnumoperatorType;@JsonProperty("values")privateListvalueList=newArrayList();}叶子条件@JsonPropertyOrder(alphabetic=true)@JsonIgnoreProperties(ignoreUnknown=true)@DatapublicclassCompositeCondition实现条件{privateStringname="C";@JsonProperty("conditionType")privateConditionTypeEnumconditionType=ConditionTypeEnum.AND;@JsonProperty("conditions")privateListconditionList=newArrayList();}组合Condition智能查询验证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不需要查询。这样可以节省时间和数据大小。在关联表的expandsub-primaryrelationship中,默认只查询主表的id和name,避免主表的查询层级过深。如果指定展开关联对象名,则查询主表中的所有字段,适用于不需要延迟加载的场景,比如查询客户信息时,将客户完整信息一起查询。总结本文介绍了列表查询API的所有参数,包括智能查询、全文搜索、字段选择。crudapi系统通过配置实现对象查询和分页。附上demo演示本系统是一个产品级的零代码平台。不同于自动代码生成器,它不需要生成Controller、Service、Repository、Entity等业务代码。业务独立的CRUDRESTfulAPI。官网地址:https://crudapi.cn测试地址:https://demo.crudapi.cn/crudapi/login