package xyz.zhouxy.jdbc;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
import java.util.OptionalLong;
import javax.annotation.Nullable;
/**
* JdbcOperations
*
*
* 定义 JdbcTemplate 的 API
*
*
* @author ZhouXY
* @since 1.0.0
*/
interface JdbcOperations {
// #region - query
/**
* 执行查询,并按照自定义处理逻辑对结果进行处理,将结果转换为指定类型并返回
*
* @param sql SQL
* @param params 参数
* @param resultHandler 结果处理器,用于处理 {@link ResultSet}
*/
T query(String sql, Object[] params, ResultHandler resultHandler)
throws SQLException;
/**
* 执行查询,并按照自定义处理逻辑对结果进行处理,将结果转换为指定类型并返回
*
* @param sql SQL
* @param resultHandler 结果处理器,用于处理 {@link ResultSet}
*/
T query(String sql, ResultHandler resultHandler)
throws SQLException;
// #endregion
// #region - queryList
/**
* 执行查询,将查询结果的每一行数据按照指定逻辑进行处理,返回结果列表
*
* @param sql SQL
* @param params 参数
* @param rowMapper {@link ResultSet} 中每一行的数据的处理逻辑
*/
List queryList(String sql, Object[] params, RowMapper rowMapper)
throws SQLException;
/**
* 执行查询,返回结果映射为指定的类型。当结果为单列时使用
*
* @param sql SQL
* @param params 参数
* @param clazz 将结果映射为指定的类型
*/
List queryList(String sql, Object[] params, Class clazz)
throws SQLException;
/**
* 执行查询,每一行数据映射为 {@code Map},返回结果列表
*
* @param sql SQL
* @param params 参数列表
*/
List