{"id":24567123,"url":"https://github.com/itfsw/querybuilder","last_synced_at":"2025-08-02T18:09:46.903Z","repository":{"id":57725427,"uuid":"108815536","full_name":"itfsw/QueryBuilder","owner":"itfsw","description":"An Java Backend for jQuery-QueryBuilder","archived":false,"fork":false,"pushed_at":"2018-11-01T05:32:35.000Z","size":205,"stargazers_count":61,"open_issues_count":2,"forks_count":34,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-02T12:48:41.158Z","etag":null,"topics":["java","jquery-querybuilder"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itfsw.png","metadata":{"files":{"readme":"README-EN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-30T07:20:52.000Z","updated_at":"2025-03-05T01:22:50.000Z","dependencies_parsed_at":"2022-09-11T20:21:40.848Z","dependency_job_id":null,"html_url":"https://github.com/itfsw/QueryBuilder","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/itfsw/QueryBuilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itfsw%2FQueryBuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itfsw%2FQueryBuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itfsw%2FQueryBuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itfsw%2FQueryBuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itfsw","download_url":"https://codeload.github.com/itfsw/QueryBuilder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itfsw%2FQueryBuilder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268431639,"owners_count":24249413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","jquery-querybuilder"],"created_at":"2025-01-23T13:16:42.009Z","updated_at":"2025-08-02T18:09:46.876Z","avatar_url":"https://github.com/itfsw.png","language":"Java","readme":"### Document  \n[中文](README.md)\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;[English](README-EN.md)  \n\n# QueryBuilder\nAn Java Backend for [jQuery QueryBuilder](https://github.com/mistic100/jQuery-QueryBuilder)。\n    \n[![jQuery QueryBuilder](screenshot.png)](http://querybuilder.js.org/index.html)\n\n---------------------------------------\nMaven引用：  \n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.itfsw\u003c/groupId\u003e\n  \u003cartifactId\u003eQueryBuilder\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n---------------------------------------\n#### Basic Usage\n```java\npublic class Test {\n    @Autowired\n    private JdbcTemplate jdbcTemplate;\n    @Autowired\n    private MongoTemplate mongoTemplate;\n\n    public void test() throws IOException {\n        String json = \"{\\\"condition\\\":\\\"OR\\\",\\\"rules\\\":[{\\\"id\\\":\\\"name\\\",\\\"field\\\":\\\"username\\\",\\\"type\\\":\\\"string\\\",\\\"input\\\":\\\"text\\\",\\\"operator\\\":\\\"equal\\\",\\\"value\\\":\\\"Mistic\\\"}],\\\"not\\\":false,\\\"valid\\\":true}\";\n\n        // ----------------------------------------- SQL -----------------------------------------\n        // get SqlBuilder\n        SqlQueryBuilderFactory sqlQueryBuilderFactory = new SqlQueryBuilderFactory();\n        SqlBuilder sqlBuilder = sqlQueryBuilderFactory.builder();\n\n        // build query\n        SqlQueryResult sqlQueryResult = sqlBuilder.build(json);\n\n        // execute\n        jdbcTemplate.query(new StringBuffer(\"SELECT * FROM `user` WHERE \").append(sqlQueryResult.getQuery()).toString(), sqlQueryResult.getParams().toArray(), rs -\u003e {\n            System.out.println(rs.getString(\"username\"));\n        });\n\n        // ----------------------------------------- Mongodb -----------------------------------------\n        // get MongodbBuilder\n        MongodbQueryBuilderFactory mongodbQueryBuilderFactory = new MongodbQueryBuilderFactory();\n        MongodbBuilder mongodbBuilder = mongodbQueryBuilderFactory.builder();\n\n        // build query\n        MongodbQueryResult mongodbQueryResult = mongodbBuilder.build(json);\n\n        // execute\n        DBCursor cursor = mongoTemplate.getCollection(\"user\").find(mongodbQueryResult.getQuery());\n        while (cursor.hasNext()){\n            System.out.println(cursor.next().get(\"username\"));\n        }\n    }\n}\n```\n#### Advanced\nThe project provides custom RuleFilter, RuleParser, and GroupParser features. In the RuleFilter, the validation of rule and data filtering are performed, while RuleParser and GroupParser can be used to resolve the custom rules.\nCustom RuleFilter and RuleParser can be replaced with factory corresponding addXXX, AddXXXBefore, AddXXXAt, and AddXXXAfter.\n\n--------------------------------------------------------------------------------------------------\n##### 1.Custom RuleFilter  \nCustom RuleFilter Class must be implement[IRuleFilter](src/main/java/com/itfsw/query/builder/support/filter/IRuleFilter.java)  \nProvide：\n* [ValidateFilter](src/main/java/com/itfsw/query/builder/support/filter/ValidateFilter.java)；\n* [DefaultValueConvertFilter](src/main/java/com/itfsw/query/builder/support/filter/DefaultValueConvertFilter.java)；\n* [DatetimeConvertFilter](src/main/java/com/itfsw/query/builder/support/filter/DatetimeConvertFilter.java)；\n* [SqlInjectionAttackFilter](src/main/java/com/itfsw/query/builder/support/filter/SqlInjectionAttackFilter.java)；\n\n##### 2.Custom RuleParser\nDepending on the database，Custom RuleParser Class must be implement[AbstractMongodbRuleParser](src/main/java/com/itfsw/query/builder/support/parser/AbstractMongodbRuleParser.java) or [AbstractSqlRuleParser](src/main/java/com/itfsw/query/builder/support/parser/AbstractSqlRuleParser.java)  \n\nProvide：\n\u003eoperator(\"equal\",\"not_equal\",\"in\",\"not_in\",\"less\",\"less_or_equal\",\"greater\",\"greater_or_equal\",\"between\",\"not_between\",\"begins_with\",\"not_begins_with\",\"contains\",\"not_contains\",\"ends_with\",\"not_ends_with\",\"is_empty\",\"is_not_empty\",\"is_null\",\"is_not_null\")。  \n\n##### 3.Custom GroupParser\nCustom RuleFilter Class must be implement[IGroupParser](src/main/java/com/itfsw/query/builder/support/parser/IGroupParser.java)   \n\nProvide：\n\u003edefault implements has provide \"AND,OR,NOT\"\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitfsw%2Fquerybuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitfsw%2Fquerybuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitfsw%2Fquerybuilder/lists"}