All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.beetl.sql.mapper.lambda.LambdaSubQuery Maven / Gradle / Ivy

The newest version!
package org.beetl.sql.mapper.lambda;

import org.beetl.sql.core.SQLManager;
import org.beetl.sql.core.SQLResult;
import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.query.LambdaQuery;

import java.util.Arrays;

/**
 * 增强LambdaQuery查询,允许单表是一个子查询,子查询来源于sqlId
 * @see "https://gitee.com/xiandafu/beetlsql/issues/I1WRHZ"
 * @author xiandafu
 */
public class LambdaSubQuery extends LambdaQuery {
	private SqlId sqlId;
	private Object paras;
	public LambdaSubQuery(SQLManager sqlManager, Class clazz, SqlId sqlId) {
		this(sqlManager, clazz, sqlId, null);
	}

	public LambdaSubQuery(SQLManager sqlManager, Class clazz, SqlId sqlId, Object paras) {
		super(sqlManager, clazz);
		this.sqlId = sqlId;
		this.paras = paras;
	}

	@Override
	public String getTableName(Class c) {
		SQLResult sqlResult = this.sqlManager.getSQLResult(sqlId, paras);
		// 将sqlId的查询参数增加在前面
		getParams().addAll(0, Arrays.asList(sqlResult.toObjectArray()));
		//拼接sql: ( sql ) t
		return new StringBuilder("( ").append(sqlResult.jdbcSql).append(" ) _t").toString();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy