package com.dt.jdbc.norm;
import com.dt.core.engine.ColumnEngine;
import com.dt.core.engine.LimitEngine;
import com.dt.core.engine.WhereEngine;
import com.dt.core.norm.Engine;
import com.dt.core.norm.Model;
import com.dt.jdbc.bean.PageResultForBean;
import com.dt.jdbc.bean.PageResultForMap;
import com.dt.jdbc.bean.Pagination;
import com.dt.jdbc.core.SpringJdbcEngine;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* jdbc 增删改查接口
* 提供总计多达100+种方法
*
注意,凡是涉及列名请使用驼峰命名法转义后的属性名,生成的模板类有对应的常量供使用
*
* @author 白超
* @version 1.0
* @see SpringJdbcEngine
* @since 2018/7/10
*/
@SuppressWarnings("unused")
public interface JdbcEngine {
/**
* 复制一张表
*
不会复制表的数据
*
* @param sourceTableName 源表名
* @param targetTableName 目标表名
* @return 不反回任何值, 这里返回int为占位用
*/
int copyTable(String sourceTableName, String targetTableName);
/**
* 删除表
*
* @param tableName 表名
* @return 不反回任何值, 这里返回int为占位用
*/
int deleteTable(String tableName);
/**
* 重命名表
*
* @param sourceTableName 源表名
* @param targetTableName 目标表名
* @return 不反回任何值, 这里返回 {@code int} 为占位用
*/
int renameTable(String sourceTableName, String targetTableName);
/**
* 查询表是否存在
*
* @param tableName 表名
* @return 存在返回 {@code true}, 不存在返回 {@link false}
*/
boolean isTableExist(String tableName);
/**
* 根据主键查询
*
若查询不到对应数据,返回 {@code null}
*
* @param keyValue 主键值
* @param columnEngine 用于构建查询SQL的字段引擎 {@link com.dt.core.engine.MySqlEngine}
* @return 查询结果注入Map返回, key-属性名(驼峰命名法) value-属性值
*/
Map queryByPrimaryKey(Object keyValue, ColumnEngine columnEngine);
/**
* 根据主键查询
* 若查询不到对应数据,返回 {@code null}
*
注意,用于接收数据的容器必须具备对应查询字段(驼峰命名法)的setter方法
*
* @param keyValue 主键值
* @param returnType 返回容器类型,用于接收查询结果
* @param columnEngine 用于构建查询SQL的字段引擎 {@link com.dt.core.engine.MySqlEngine}
* @param 与returnType指定数据类型一致
* @return 查询结果注入指定的returnType对象
*/
T queryByPrimaryKey(Object keyValue, Class returnType, ColumnEngine columnEngine);
/**
* 查询唯一一条数据
* 若查询不到对应数据,返回 {@code null}
*
若查询到多条数据,抛异常 {@link org.springframework.dao.IncorrectResultSizeDataAccessException}
*
* @param engine 用于构建查询SQL的引擎 {@link com.dt.core.engine.MySqlEngine}
* @return 查询结果注入Map返回, key-属性名(驼峰命名法) value-属性值
*/
Map queryOne(Engine engine);
/**
* 查询唯一一条数据
* 若查询不到对应数据,返回 {@code null}
*
若查询到多条数据,抛异常 {@link org.springframework.dao.IncorrectResultSizeDataAccessException}
*
注意,用于接收数据的容器必须具备对应查询字段(驼峰命名法)的setter方法
*
* @param returnType 返回容器类型,用于接收查询结果
* @param engine 用于构建查询SQL的引擎 {@link com.dt.core.engine.MySqlEngine}
* @param 与returnType指定数据类型一致
* @return 查询结果注入指定的returnType对象
*/
T queryOne(Class returnType, Engine engine);
/**
* 查询多条数据
* 若查询不到对应数据,返回长度为0的空集合
*
* @param engine 用于构建查询SQL的引擎 {@link com.dt.core.engine.MySqlEngine}
* @return 查询结果注入Map装入ArrayList返回, key-属性名(驼峰命名法) value-属性值
*/
List