Skip to content

腾讯 APIJSON 的字段插件,支持 !key 反选字段 和 字段名映射。A column plugin for Tencent APIJSON, support Column Inverse and Column Mapping.

License

Notifications You must be signed in to change notification settings

APIJSON/apijson-column

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

apijson-column

腾讯 APIJSON 4.6.6+ 的字段插件,支持 !key 反选字段 和 字段名映射,可通过 Maven, Gradle 等远程依赖。
A column plugin for Tencent APIJSON 4.6.6+ , support Column Inverse and Column Mapping.

image

image

添加依赖

Add Dependency

Maven

1. 在 pom.xml 中添加 JitPack 仓库

1. Add the JitPack repository to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

image


2. 在 pom.xml 中添加 apijson-column 依赖

2. Add the apijson-column dependency to pom.xml

	<dependency>
	    <groupId>com.github.APIJSON</groupId>
	    <artifactId>apijson-column</artifactId>
	    <version>LATEST</version>
	</dependency>

image


https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/pom.xml



Gradle

1. 在项目根目录 build.gradle 中最后添加 JitPack 仓库

1. Add the JitPack repository in your root build.gradle at the end of repositories

	allprojects {
		repositories {
			maven { url 'https://jitpack.io' }
		}
	}

2. 在项目某个 module 目录(例如 app) build.gradle 中添加 apijson-column 依赖

2. Add the apijson-column dependency in one of your modules(such as app)

	dependencies {
	        implementation 'com.github.APIJSON:apijson-column:latest'
	}



初始化

Initialization

1.在你项目继承 AbstractSQLConfig 的子类 static {} 代码块配置映射关系

1.Configure mappings in static {} of your SQLConfig extends AbstractSQLConfig

	static {
		Map<String, List<String>> tableColumnMap = new HashMap<>();
		tableColumnMap.put("User", Arrays.asList(StringUtil.split("id,sex,name,tag,head,contactIdList,pictureList,date")));
		ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.put(null, tableColumnMap);
		
		Map<String, String> userKeyColumnMap = new HashMap<>();
		userKeyColumnMap.put("gender", "sex");  // gender -> sex
		
		Map<String, Map<String, String>> keyColumnMap = new HashMap<>();
		keyColumnMap.put("User", userKeyColumnMap);

		ColumnUtil.VERSIONED_KEY_COLUMN_MAP.put(null, keyColumnMap);

		ColumnUtil.init();
	}

image


2.在你项目继承 AbstractSQLConfig 的子类重写方法 setColumn, getKey

2.Override setColumn, getKey in your SQLConfig extends AbstractSQLConfig

	@Override
	public AbstractSQLConfig setColumn(List<String> column) {
		return super.setColumn(ColumnUtil.compatInputColumn(column, getTable(), getMethod()));
	}
	@Override
	public String getKey(String key) {
		return super.getKey(ColumnUtil.compatInputKey(key, getTable(), getMethod()));
	}

image


3.在你项目继承 AbstractSQLExecutor 的子类重写方法 getKey

3.Override getKey in your SQLExecutor extends AbstractSQLExecutor

	@Override
	protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table,
			int columnIndex, Map<String, JSONObject> childMap) throws Exception {
		return ColumnUtil.compatOutputKey(super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap), config.getTable(), config.getMethod());
	}

image



	static {
		// 反选字段配置
		Map<String, List<String>> tableColumnMap = new HashMap<>();
		tableColumnMap.put("User", Arrays.asList(StringUtil.split("id,sex,name,tag,head,contactIdList,pictureList,date")));
		// 需要对应方法传参也是这样拼接才行,例如 ColumnUtil.compatInputColumn(column, getSQLDatabase() + "-" + getSQLSchema() + "-" + getTable(), getMethod());
		tableColumnMap.put("MYSQL-sys-Privacy", Arrays.asList(StringUtil.split("id,certified,phone,balance,_password,_payPassword")));
		ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.put(null, tableColumnMap);

		// 字段名映射配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
		Map<String, Map<String, String>> tableKeyColumnMap = new HashMap<>();

		Map<String, String> userKeyColumnMap = new HashMap<>();
		userKeyColumnMap.put("gender", "sex");
		userKeyColumnMap.put("createTime", "date");
		tableKeyColumnMap.put("User", userKeyColumnMap);

		Map<String, String> privacyKeyColumnMap = new HashMap<>();
		privacyKeyColumnMap.put("rest", "balance");
		// 需要对应方法传参也是这样拼接才行,例如 ColumnUtil.compatInputKey(super.getKey(key), getSQLDatabase() + "-" + getSQLSchema() + "-" + getTable(), getMethod());
		tableKeyColumnMap.put("MYSQL-sys-Privacy", privacyKeyColumnMap);

		ColumnUtil.VERSIONED_KEY_COLUMN_MAP.put(null, tableKeyColumnMap);
		// 字段名映射配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

		ColumnUtil.init();
	}



使用

Usage

1.反选字段

1.Column Inverse

"@column": "!columnKey" // 返回排除 columnKey 后的全部其它字段
"@column": "!columnKey" // return all columns except for columnKey

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "!contactIdList"  // -> id,sex,name,tag,head,pictureList,date
    }
}

image

2.字段名映射

2.Column Mapping

"@column": "showKey" // 隐藏了数据库的对应真实字段名
"@column": "showKey" // the real column name is hidden

{
    "User": {  // id,sex,name,tag,head,contactIdList,pictureList,date
        "id": 82001,
        "@column": "gender"  // -> sex 
    }
}

image

注意:APIAuto 不能自动获取并展示对应映射字段 showKey 的类型、长度、注释等文档,只能通过手写注释来实现
Note: APIAuto cannot automatically get and show the document for the showKey, you can add comment manually.


有问题可以去 Tencent/APIJSON 提 issue
Tencent/APIJSON#36



点右上角 ⭐Star 支持一下,谢谢 ^_^

Please ⭐Star this project ^_^

https://github.com/APIJSON/apijson-column

About

腾讯 APIJSON 的字段插件,支持 !key 反选字段 和 字段名映射。A column plugin for Tencent APIJSON, support Column Inverse and Column Mapping.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy