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

sf.database.jdbc.sql.CrudSqlInf Maven / Gradle / Ivy

The newest version!
package sf.database.jdbc.sql;

import sf.common.wrapper.Page;

import java.sql.Connection;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * 按sql操作
 */
public interface CrudSqlInf {
    /**
     * 批量执行语句.允许返回主键等信息
     * @param conn       数据库连接
     * @param sql        语句
     * @param parameters 参数
     * @param insertFast 是否快速插入
     * @param batchSize  批处理条数
     * @param pkeys      主键列
     * @param keyValues  返回主键值
     * @return 执行结果
     */
    int[] executeBatch(Connection conn, String sql, List parameters, boolean insertFast,
                       int batchSize, List pkeys, List> keyValues);

    /**
     * 执行sql语句可以为DML或DDL语句.
     * @param conn       数据库连接
     * @param psc        回调
     * @param setter     回调
     * @param callback   回调
     * @param sql        sql语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     Object execute(Connection conn, PreparedStatementCreator psc, PreparedStatementSetter setter, ResultSetCallback callback, String sql, Object parameters);

    /**
     * 快速插入
     * @param conn       数据库连接
     * @param sql        sql语句
     * @param parameters 参数
     * @return 返回
     */
    int insertFast(Connection conn, String sql, Object... parameters);

    /**
     * 插入
     * @param conn       数据库连接
     * @param pkeys      主键列
     * @param keyValues  返回的主键值
     * @param sql        sql语句
     * @param parameters 参数
     * @return 返回
     */
    int insert(Connection conn, List pkeys, Map keyValues, String sql, Object... parameters);

    /**
     * 执行单一语句
     * @param conn       数据库连接
     * @param sql        sql语句
     * @param parameters 参数
     * @param insertFast 是否快速插入
     * @param pkeys      主键列
     * @param keyValues  返回的主键值
     * @return 返回
     */
    int execute(Connection conn, String sql, Object[] parameters, boolean insertFast,
                List pkeys, Map keyValues);

    /**
     * 批量执行语句.
     * @param conn       数据库连接
     * @param sql        语句
     * @param parameters 参数
     * @return 返回
     */
    int[] executeBatch(Connection conn, String sql, List parameters);

    /**
     * 分页查询
     * @param conn       数据库连接
     * @param start      开始行
     * @param limit      每页行数
     * @param beanClass  返回类
     * @param sql        原始的语句,不包含限制条数的内容.
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     Page selectPage(Connection conn, long start, int limit, Class beanClass, String sql,
                           Object... parameters);

    /**
     * 最原始的分页方法,假分页实现,使用result跳过数据,实现
     * @param conn       数据库连接
     * @param start      起始位置
     * @param limit      限制数量
     * @param beanClass  返回结果,可以为实体类,Map,List,Object[]
     * @param countSql   查询总数的语句
     * @param countParas 查询总数的参数
     * @param listSql    查询列表的语句,不能包含限制条数(start和limit)的内容.
     * @param listParas  查询列表的参数
     * @param         泛型
     * @return 分页结果
     */
     Page selectPageRaw(Connection conn, long start, int limit, Class beanClass, String countSql, Object[] countParas, String listSql, Object[] listParas);

    /**
     * 最原始的分页方法,假分页实现,使用result跳过数据,实现
     * @param conn       数据库连接
     * @param start      起始位置
     * @param limit      限制数量
     * @param beanClass  返回结果,可以为实体类,Map,List,Object[]
     * @param countSql   查询总数的语句
     * @param countParas 查询总数的参数
     * @param listSql    查询列表的语句(需和查询策略配合).
     * @param listParas  查询列表的参数
     * @param strategy   分页策略
     * @param         泛型
     * @return 分页结果
     */
     Page selectPageRaw(Connection conn, long start, int limit, Class beanClass, String countSql, Object[] countParas, String listSql, Object[] listParas, PageStrategy strategy);

    /**
     * 支持结果集更新
     * @param conn       数据库连接
     * @param callback   回调
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     T selectForUpdate(Connection conn, ResultSetCallback callback, String sql, Object... parameters);

    /**
     * 支持结果集更新
     * @param conn     数据库连接
     * @param callback 回调
     * @param context  sql上下文
     * @param       泛型
     * @return 返回
     */
     T selectForUpdate(Connection conn, ResultSetCallback callback, SQLContext context);

    /**
     * 支持分页实现的迭代查询
     * @param conn       数据库连接
     * @param ormIt      结果消费
     * @param beanClass  返回类型
     * @param usePage    是否使用分页实现迭代.
     * @param sql        语句
     * @param parameters 查询参数
     * @param         泛型
     */
     void selectIterator(Connection conn, Consumer> ormIt, Class beanClass, boolean usePage, String sql, Object... parameters);

    /**
     * 支持分页实现的迭代查询
     * @param conn      数据库连接
     * @param ormIt     结果消费
     * @param beanClass 返回类型
     * @param usePage   是否使用分页实现迭代.
     * @param context   上下文
     * @param        泛型
     */
     void selectIterator(Connection conn, Consumer> ormIt, Class beanClass, boolean usePage, SQLContext context);

    /**
     * 支持分页实现的迭代查询
     * @param conn       数据库连接
     * @param ormStream  结果消费
     * @param beanClass  返回类型
     * @param usePage    否使用分页实现迭代.
     * @param sql        语句
     * @param parameters 查询参数
     * @param         泛型
     */
     void selectStream(Connection conn, Consumer> ormStream, Class beanClass, boolean usePage, String sql, Object... parameters);

    /**
     * @param conn      数据库连接
     * @param ormStream 结果消费
     * @param beanClass 返回类型
     * @param usePage   是否使用分页实现迭代.
     * @param context   上下文
     * @param        泛型
     */
     void selectStream(Connection conn, Consumer> ormStream, Class beanClass, boolean usePage, SQLContext context);

    /**
     * 查询,允许自定义处理返回结果
     * @param conn       数据库连接
     * @param callback   回调
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     T selectResultSet(Connection conn, ResultSetCallback callback, String sql, Object... parameters);

    /**
     * 查询,允许自定义设置查询参数,自定义处理返回结果
     * @param conn       数据库连接
     * @param psc        回调
     * @param callback   回调
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     T selectResultSet(Connection conn, PreparedStatementCreator psc, ResultSetCallback callback, String sql, Object... parameters);

    /**
     * 主要支持存储过程执行
     * @param con    数据库连接
     * @param action 回调
     * @param     返回类型
     * @return 返回
     */
     T execute(Connection con, ConnectionCallback action);

    /**
     * @param conn       数据库连接
     * @param sql        语句
     * @param parameters 参数
     * @return 返回
     */
    int execute(Connection conn, String sql, Object... parameters);


    /**
     * @param conn       数据库连接
     * @param sql        语句
     * @param parameters 参数
     * @return 返回
     */
    Object[] selectArray(Connection conn, String sql, Object... parameters);

    /**
     * @param conn       数据库连接
     * @param beanClass  返回类型
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     List selectList(Connection conn, Class beanClass, String sql, Object... parameters);

    /**
     * @param conn       数据库连接
     * @param beanClass  返回类型
     * @param start      开始行
     * @param limit      最大限制行数
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回
     */
     List selectList(Connection conn, Class beanClass, long start, int limit, String sql, Object... parameters);

    /**
     * 根据@SqlResultSetMapping设置返回值,返回的为单个对象,或数组对象
     * @param conn             数据库连接
     * @param resultSetMapping @SqlResultSetMapping 中的name
     * @param sql              语句
     * @param parameters       参数
     * @return 返回
     */
    List selectList(Connection conn, String resultSetMapping, String sql, Object... parameters);

    /**
     * 根据@SqlResultSetMapping设置返回值,返回的为单个对象,或数组对象
     * @param conn             数据库连接
     * @param resultSetMapping @SqlResultSetMapping 中的name
     * @param start            开始行
     * @param limit            最大限制行数
     * @param sql              语句
     * @param parameters       参数
     * @return 返回
     */
    List selectList(Connection conn, String resultSetMapping, long start, int limit, String sql, Object... parameters);

    /**
     * 根据@SqlResultSetMapping设置返回值,返回的为单个对象,或数组对象
     * @param conn             数据库连接
     * @param resultSetMapping @SqlResultSetMapping 中的name
     * @param sql              语句
     * @param parameters       参数
     * @return 返回
     */
    Object selectOne(Connection conn, String resultSetMapping, String sql, Object... parameters);

    /**
     * @param conn       数据库连接
     * @param beanClass  返回对象
     * @param sql        语句
     * @param parameters 参数
     * @param         泛型
     * @return 返回值
     */
     T selectOne(Connection conn, Class beanClass, String sql, Object... parameters);

    /**
     * @param conn  数据库连接
     * @param sql   语句
     * @param paras 参数
     * @return 返回
     */
    List> select(Connection conn, String sql, Object... paras);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy