APIJSON 博客10 AbstractSQLConfig 第十篇

2021SC@SDUSC

继续上周的分析

在方法SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List<Join> joinList, boolean isProcedure, Callback callback) throws Exception {}中,定义了如下变量

        String role = request.getString(KEY_ROLE);
		String cache = request.getString(KEY_CACHE);
		String combine = request.getString(KEY_COMBINE);
		Subquery from = (Subquery) request.get(KEY_FROM);
		String column = request.getString(KEY_COLUMN);
		String group = request.getString(KEY_GROUP);
		String having = request.getString(KEY_HAVING);
		String order = request.getString(KEY_ORDER);
		String raw = request.getString(KEY_RAW);
		String json = request.getString(KEY_JSON);

对JSONObject request 的getString方法,获得相应的变量

关于变量的解释,在JSONObject类中有详细注释如下

    public static final String KEY_TRY = "@try"; //尝试,忽略异常
	public static final String KEY_CATCH = "@catch"; //TODO 捕捉到异常后,处理方式  null-不处理;DEFAULT-返回默认值;ORIGIN-返回请求里的原始值
	public static final String KEY_DROP = "@drop"; //丢弃,不返回,TODO 应该通过 fastjson 的 ignore 之类的机制来处理,避免导致下面的对象也不返回
	//	public static final String KEY_KEEP = "@keep"; //一定会返回,为 null 或 空对象时,会使用默认值(非空),解决其它对象因为不关联的第一个对为空导致也不返回
	public static final String KEY_DEFULT = "@default"; //TODO 自定义默认值 { "@default":true },@default 可完全替代 @keep
	public static final String KEY_NULL = "@null"; //TODO 值为 null 的键值对 "@null":"tag,pictureList",允许 is NULL 条件判断, SET tag = NULL 修改值为 NULL 等

	public static final String KEY_ROLE = "@role"; //角色,拥有对某些数据的某些操作的权限
	public static final String KEY_DATABASE = "@database"; //数据库类型,默认为MySQL
	public static final String KEY_SCHEMA = "@schema"; //数据库,Table在非默认schema内时需要声明
	public static final String KEY_DATASOURCE = "@datasource"; //数据源
	public static final String KEY_EXPLAIN = "@explain"; //分析 true/false
	public static final String KEY_CACHE = "@cache"; //缓存 RAM/ROM/ALL
	public static final String KEY_COLUMN = "@column"; //查询的Table字段或SQL函数

在对APIJSON的分析中,我的同学分析了JSONObject类

地址如下

(31条消息) 代码分析七_鲲不鲲的博客-CSDN博客

​​​​​​(31条消息) 代码分析八_鲲不鲲的博客-CSDN博客

同学的代码详细的分析了JSONObject类的定义和用途

下面是在一个try{}内


			//强制作为条件且放在最前面优化性能
			request.remove(idKey);
			request.remove(idInKey);
			//关键词
			request.remove(KEY_ROLE);
			request.remove(KEY_EXPLAIN);
			request.remove(KEY_CACHE);
			request.remove(KEY_DATASOURCE);
			request.remove(KEY_DATABASE);
			request.remove(KEY_SCHEMA);
			request.remove(KEY_COMBINE);
			request.remove(KEY_FROM);
			request.remove(KEY_COLUMN);
			request.remove(KEY_GROUP);
			request.remove(KEY_HAVING);
			request.remove(KEY_ORDER);
			request.remove(KEY_RAW);
			request.remove(KEY_JSON);

 这里remove是移除了request的内部变量

			String[] rawArr = StringUtil.split(raw);
			config.setRaw(rawArr == null || rawArr.length <= 0 ? null : new ArrayList<>(Arrays.asList(rawArr)));

			Map<String, Object> tableWhere = new LinkedHashMap<String, Object>();//保证顺序好优化 WHERE id > 1 AND name LIKE...

这里用到了StringUtils.split(),作用是分割字符

config.setRaw(rawArr == null || rawArr.length <= 0 ? null : new ArrayList<(Arrays.asL

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值