{"id":21525227,"url":"https://github.com/apijson/apijson-column","last_synced_at":"2025-04-09T23:21:31.304Z","repository":{"id":105155880,"uuid":"354811266","full_name":"APIJSON/apijson-column","owner":"APIJSON","description":"腾讯 APIJSON 的字段插件，支持 !key 反选字段 和 字段名映射。A column plugin for Tencent APIJSON, support Column Inverse and Column Mapping.","archived":false,"fork":false,"pushed_at":"2025-02-15T16:00:22.000Z","size":57,"stargazers_count":20,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T01:11:46.547Z","etag":null,"topics":["apijson"],"latest_commit_sha":null,"homepage":"http://apijson.cn","language":"Java","has_issues":false,"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/APIJSON.png","metadata":{"files":{"readme":"README.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-05T11:26:12.000Z","updated_at":"2025-02-15T15:54:56.000Z","dependencies_parsed_at":"2025-02-15T16:26:46.616Z","dependency_job_id":"74d37f31-61f6-4134-be87-f71ac7a1a46d","html_url":"https://github.com/APIJSON/apijson-column","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APIJSON%2Fapijson-column","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APIJSON%2Fapijson-column/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APIJSON%2Fapijson-column/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APIJSON%2Fapijson-column/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/APIJSON","download_url":"https://codeload.github.com/APIJSON/apijson-column/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248126370,"owners_count":21051910,"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","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":["apijson"],"created_at":"2024-11-24T01:33:47.300Z","updated_at":"2025-04-09T23:21:31.281Z","avatar_url":"https://github.com/APIJSON.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# apijson-column  [![](https://jitpack.io/v/APIJSON/apijson-column.svg)](https://jitpack.io/#APIJSON/apijson-column)\n腾讯 [APIJSON](https://github.com/Tencent/APIJSON) 4.6.6+ 的字段插件，支持 !key 反选字段 和 字段名映射，可通过 Maven, Gradle 等远程依赖。\u003cbr /\u003e\nA column plugin for Tencent [APIJSON](https://github.com/Tencent/APIJSON) 4.6.6+ , support Column Inverse and Column Mapping.\n\n![image](https://user-images.githubusercontent.com/5738175/113572899-ab903380-964b-11eb-9f3c-69f3437d8a54.png)\n\n![image](https://user-images.githubusercontent.com/5738175/113572926-b77bf580-964b-11eb-8a17-10917669c2aa.png)\n\n## 添加依赖\n## Add Dependency\n\n### Maven\n#### 1. 在 pom.xml 中添加 JitPack 仓库\n#### 1. Add the JitPack repository to pom.xml\n```xml\n\t\u003crepositories\u003e\n\t\t\u003crepository\u003e\n\t\t    \u003cid\u003ejitpack.io\u003c/id\u003e\n\t\t    \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n\t\t\u003c/repository\u003e\n\t\u003c/repositories\u003e\n```\n\n![image](https://user-images.githubusercontent.com/5738175/167261814-d75d8fff-0e64-4534-a840-60ef628a8873.png)\n\n\u003cbr /\u003e\n\n#### 2. 在 pom.xml 中添加 apijson-column 依赖\n#### 2. Add the apijson-column dependency to pom.xml\n```xml\n\t\u003cdependency\u003e\n\t    \u003cgroupId\u003ecom.github.APIJSON\u003c/groupId\u003e\n\t    \u003cartifactId\u003eapijson-column\u003c/artifactId\u003e\n\t    \u003cversion\u003eLATEST\u003c/version\u003e\n\t\u003c/dependency\u003e\n```\n\n![image](https://user-images.githubusercontent.com/5738175/167261792-7635c4b6-83a4-4d37-b0e5-e8455fdbed62.png)\n\n\u003cbr /\u003e\n\nhttps://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/pom.xml\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n### Gradle\n#### 1. 在项目根目录 build.gradle 中最后添加 JitPack 仓库\n#### 1. Add the JitPack repository in your root build.gradle at the end of repositories\n```gradle\n\tallprojects {\n\t\trepositories {\n\t\t\tmaven { url 'https://jitpack.io' }\n\t\t}\n\t}\n```\n\u003cbr /\u003e\n\n#### 2. 在项目某个 module 目录(例如 `app`) build.gradle 中添加 apijson-column 依赖\n#### 2. Add the apijson-column dependency in one of your modules(such as `app`)\n```gradle\n\tdependencies {\n\t        implementation 'com.github.APIJSON:apijson-column:latest'\n\t}\n```\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 初始化\n## Initialization\n\n#### 1.在你项目继承 AbstractSQLConfig 的子类 static {} 代码块配置映射关系\n#### 1.Configure mappings in static {} of your SQLConfig extends AbstractSQLConfig\n```java\n\tstatic {\n\t\tMap\u003cString, List\u003cString\u003e\u003e tableColumnMap = new HashMap\u003c\u003e();\n\t\ttableColumnMap.put(\"User\", Arrays.asList(StringUtil.split(\"id,sex,name,tag,head,contactIdList,pictureList,date\")));\n\t\tColumnUtil.VERSIONED_TABLE_COLUMN_MAP.put(null, tableColumnMap);\n\t\t\n\t\tMap\u003cString, String\u003e userKeyColumnMap = new HashMap\u003c\u003e();\n\t\tuserKeyColumnMap.put(\"gender\", \"sex\");  // gender -\u003e sex\n\t\t\n\t\tMap\u003cString, Map\u003cString, String\u003e\u003e keyColumnMap = new HashMap\u003c\u003e();\n\t\tkeyColumnMap.put(\"User\", userKeyColumnMap);\n\n\t\tColumnUtil.VERSIONED_KEY_COLUMN_MAP.put(null, keyColumnMap);\n\n\t\tColumnUtil.init();\n\t}\n```\n\n![image](https://user-images.githubusercontent.com/5738175/167261660-f22a65a1-41ec-41c2-a97e-f4e809a3ddc9.png)\n\n\u003cbr /\u003e\n\n#### 2.在你项目继承 AbstractSQLConfig 的子类重写方法 setColumn, getKey\n#### 2.Override setColumn, getKey in your SQLConfig extends AbstractSQLConfig\n```java\n\t@Override\n\tpublic AbstractSQLConfig setColumn(List\u003cString\u003e column) {\n\t\treturn super.setColumn(ColumnUtil.compatInputColumn(column, getTable(), getMethod()));\n\t}\n\t@Override\n\tpublic String getKey(String key) {\n\t\treturn super.getKey(ColumnUtil.compatInputKey(key, getTable(), getMethod()));\n\t}\n```\n\n![image](https://user-images.githubusercontent.com/5738175/167261697-48d54c3f-2913-4e07-8e41-80058688ac8b.png)\n\n\u003cbr /\u003e\n\n#### 3.在你项目继承 AbstractSQLExecutor 的子类重写方法 getKey\n#### 3.Override getKey in your SQLExecutor extends AbstractSQLExecutor\n```java\n\t@Override\n\tprotected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table,\n\t\t\tint columnIndex, Map\u003cString, JSONObject\u003e childMap) throws Exception {\n\t\treturn ColumnUtil.compatOutputKey(super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap), config.getTable(), config.getMethod());\n\t}\n```\n\n![image](https://user-images.githubusercontent.com/5738175/167261741-7d9436bc-bd12-447c-bfa5-20631497164f.png)\n\n\u003cbr /\u003e\u003cbr /\u003e\n\n#### 见 [ColumnUtil](/src/main/java/apijson/column/ColumnUtil.java) 的注释及 [APIJSONBoot](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot) 的 [DemoSQLConfig](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/DemoSQLConfig.java) 和 [DemoSQLExecutor](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/DemoSQLExecutor.java) \u003cbr /\u003e\n\n#### See document in [ColumnUtil](/src/main/java/apijson/column/ColumnUtil.java) and [DemoSQLConfig](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/DemoSQLConfig.java), [DemoSQLExecutor](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/DemoSQLExecutor.java) in [APIJSONBoot](https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot)\n\n```java\n\tstatic {\n\t\t// 反选字段配置\n\t\tMap\u003cString, List\u003cString\u003e\u003e tableColumnMap = new HashMap\u003c\u003e();\n\t\ttableColumnMap.put(\"User\", Arrays.asList(StringUtil.split(\"id,sex,name,tag,head,contactIdList,pictureList,date\")));\n\t\t// 需要对应方法传参也是这样拼接才行，例如 ColumnUtil.compatInputColumn(column, getSQLDatabase() + \"-\" + getSQLSchema() + \"-\" + getTable(), getMethod());\n\t\ttableColumnMap.put(\"MYSQL-sys-Privacy\", Arrays.asList(StringUtil.split(\"id,certified,phone,balance,_password,_payPassword\")));\n\t\tColumnUtil.VERSIONED_TABLE_COLUMN_MAP.put(null, tableColumnMap);\n\n\t\t// 字段名映射配置 \u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\n\t\tMap\u003cString, Map\u003cString, String\u003e\u003e tableKeyColumnMap = new HashMap\u003c\u003e();\n\n\t\tMap\u003cString, String\u003e userKeyColumnMap = new HashMap\u003c\u003e();\n\t\tuserKeyColumnMap.put(\"gender\", \"sex\");\n\t\tuserKeyColumnMap.put(\"createTime\", \"date\");\n\t\ttableKeyColumnMap.put(\"User\", userKeyColumnMap);\n\n\t\tMap\u003cString, String\u003e privacyKeyColumnMap = new HashMap\u003c\u003e();\n\t\tprivacyKeyColumnMap.put(\"rest\", \"balance\");\n\t\t// 需要对应方法传参也是这样拼接才行，例如 ColumnUtil.compatInputKey(super.getKey(key), getSQLDatabase() + \"-\" + getSQLSchema() + \"-\" + getTable(), getMethod());\n\t\ttableKeyColumnMap.put(\"MYSQL-sys-Privacy\", privacyKeyColumnMap);\n\n\t\tColumnUtil.VERSIONED_KEY_COLUMN_MAP.put(null, tableKeyColumnMap);\n\t\t// 字段名映射配置 \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\n\t\tColumnUtil.init();\n\t}\n```\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 使用\n## Usage\n\n### 1.反选字段\n### 1.Column Inverse\n\"@column\": \"!columnKey\"  // 返回排除 columnKey 后的全部其它字段 \u003cbr /\u003e\n\"@column\": \"!columnKey\"  // return all columns except for columnKey\n```js\n{\n    \"User\": {  // id,sex,name,tag,head,contactIdList,pictureList,date\n        \"id\": 82001,\n        \"@column\": \"!contactIdList\"  // -\u003e id,sex,name,tag,head,pictureList,date\n    }\n}\n```\n\n![image](https://user-images.githubusercontent.com/5738175/113572899-ab903380-964b-11eb-9f3c-69f3437d8a54.png)\n\n\n### 2.字段名映射\n### 2.Column Mapping\n\"@column\": \"showKey\"  // 隐藏了数据库的对应真实字段名 \u003cbr /\u003e\n\"@column\": \"showKey\"  // the real column name is hidden\n```js\n{\n    \"User\": {  // id,sex,name,tag,head,contactIdList,pictureList,date\n        \"id\": 82001,\n        \"@column\": \"gender\"  // -\u003e sex \n    }\n}\n```\n\n![image](https://user-images.githubusercontent.com/5738175/113572926-b77bf580-964b-11eb-8a17-10917669c2aa.png)\n\n注意：[APIAuto](https://github.com/TommyLemon/APIAuto) 不能自动获取并展示对应映射字段 showKey 的类型、长度、注释等文档，只能通过手写注释来实现 \u003cbr /\u003e\nNote: [APIAuto](https://github.com/TommyLemon/APIAuto) cannot automatically get and show the document for the showKey, you can add comment manually. \n\n\u003cbr /\u003e\n有问题可以去 Tencent/APIJSON 提 issue \u003cbr /\u003e\nhttps://github.com/Tencent/APIJSON/issues/36\n\n\u003cbr /\u003e\u003cbr /\u003e\n\n#### 点右上角 ⭐Star 支持一下，谢谢 ^_^\n#### Please ⭐Star this project ^_^\nhttps://github.com/APIJSON/apijson-column\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapijson%2Fapijson-column","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapijson%2Fapijson-column","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapijson%2Fapijson-column/lists"}