[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/APIJSON/APIJSON/main/src/main/java/apijson/orm/SQLExecutor.java [Back]  [Original]

/*Copyright (C) 2026 the APIJSON group.  All rights reserved.

This source code is licensed under the Apache License Version 2.0.*/


package apijson.orm;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.List;
import java.util.Map;

import apijson.*;

/**executor for query(read) or update(write) MySQL database
 * @author Lemon
 */
public interface SQLExecutor {
	Parser getParser();
	SQLExecutor setParser(Parser parser);

	/**
	 * @param sql
	 * @param list
	 * @param config
	 */
	void putCache(String sql, List list, SQLConfig config);

	/**
	 * @param sql
	 * @param config
	 * @return
	 */
	List getCache(String sql, SQLConfig config);

	/**
	 * @param sql
	 * @param position
	 * @param config
	 * @return
	 */
	M getCacheItem(String sql, int position, SQLConfig config);

	/**
	 * @param sql
	 * @param config
	 */
	void removeCache(String sql, SQLConfig config);

	/**SQL
	 * @param config
	 * @param unknownType
	 * @return
	 * @throws Exception
	 */
	M execute(@NotNull SQLConfig config, boolean unknownType) throws Exception;

	//executeQueryexecuteUpdate
	/**
	 * @param config
	 * @return
	 * @throws SQLException
	 */
	default ResultSet executeQuery(@NotNull SQLConfig config) throws Exception {
		return executeQuery(config, null);
	}
	ResultSet executeQuery(@NotNull SQLConfig config, String sql) throws Exception;

	/**
	 * @param config
	 * @return
	 * @throws SQLException
	 */
	default int executeUpdate(@NotNull SQLConfig config) throws Exception {
		return executeUpdate(config, null);
	}
	int executeUpdate(@NotNull SQLConfig config, String sql) throws Exception;


	/**JSON
	* @param config
	* @param rsmd
	* @param position
	* @param label
	* @return
	*/
	boolean isJSONType(@NotNull SQLConfig config, ResultSetMetaData rsmd, int position, String label);

	/**
	 * Convert a JDBC value to a JSON-serializable Java value. Database adapters can
	 * override this hook without replacing the complete result-set traversal.
	 */
	default Object mapResultValue(@NotNull SQLConfig config, Object value, int jdbcType
			, String typeName, String label) throws Exception {
		return value;
	}


	Connection getConnection(@NotNull SQLConfig config) throws Exception;
	default Statement getStatement(@NotNull SQLConfig config) throws Exception {
		return getStatement(config, null);
	}
	Statement getStatement(@NotNull SQLConfig config, String sql) throws Exception;

	int getTransactionIsolation();
	void setTransactionIsolation(int transactionIsolation);
	/**
	 * @throws SQLException
	 */
	void begin(int transactionIsolation) throws SQLException;
	/**
	 * @throws SQLException
	 */
	void rollback() throws SQLException;
	/**
	 * @throws SQLException
	 */
	void rollback(Savepoint savepoint) throws SQLException;
	/**
	 * @throws SQLException
	 */
	void commit() throws SQLException;
	/**
	 */
	void close();

	ResultSet executeQuery(@NotNull Statement statement, String sql) throws Exception;

	int executeUpdate(@NotNull Statement statement, String sql) throws Exception;

	ResultSet execute(@NotNull Statement statement, String sql) throws Exception;

	int getGeneratedSQLCount();

	int getCachedSQLCount();

	int getExecutedSQLCount();

	long getExecutedSQLDuration();

	long getSqlResultDuration();

}

Web Proxy Viewer  |  New URL  |  Original Page