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

62 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