top.lingkang.finalsql.sql.FinalSql Maven / Gradle / Ivy
The newest version!
package top.lingkang.finalsql.sql;
import top.lingkang.finalsql.annotation.Nullable;
import top.lingkang.finalsql.config.SqlConfig;
import top.lingkang.finalsql.error.FinalException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.List;
import java.util.Map;
/**
* @author lingkang
* Created by 2022/4/12
* 对外操作接口
*/
public interface FinalSql extends ExtendSql{
/**
* 每个 FinalSql实现的唯一ID
*
* @return
*/
int getId();
/**
* 查询
*
* @param clazz 表映射实体类
* @return
*/
List select(Class clazz);
/**
* 条件查询
*
* @param clazz 表映射实体类
* @param condition 条件
* @return
*/
List select(Class clazz, Condition condition);
/**
* 查询返回一行
*
* @param clazz 表映射实体类
* @param
* @return
*/
@Nullable
T selectOne(Class clazz);
/**
* 查询返回一行
*
* @param clazz 表映射实体类
* @param condition 条件
* @return
*/
@Nullable
T selectOne(Class clazz, Condition condition);
/**
* 总数查询
*
* @param clazz 表映射实体类
* @return
*/
int selectCount(Class clazz);
/**
* 总数查询
*
* @param clazz 表映射实体类
* @param condition 条件
* @return
*/
int selectCount(Class clazz, Condition condition);
/**
* 执行SQL查询返回对象
*
* @param sql
* @param resultClass 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param
* @return
*/
List selectForList(String sql, Class resultClass);
/**
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param row 指定返回的行数
* @param
* @return
*/
List selectForListRow(String sql, Class t, int row);
/**
* 执行SQL查询返回对象
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param param sql中的 ? 入参
* @param
* @return
*/
@Nullable
List selectForList(String sql, Class t, Object... param);
/**
* 执行SQL查询返回对象
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param param
* @param
* @return
*/
List selectForList(String sql, Class t, List param);
/**
* 查询返回指定行数,受方言处理影响,针对不同数据库会有不同表现,严格编写SQL
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param row 指定返回的行数
* @param param
* @param
* @return
*/
List selectForListRow(String sql, Class t, int row, Object... param);
/**
* 查询返回指定行数,受方言处理影响,针对不同数据库会有不同表现,严格编写SQL
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param row
* @param param
* @param
* @return
*/
List selectForListRow(String sql, Class t, int row, List param);
/**
* 执行SQL返回对象
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param
* @return
*/
@Nullable
T selectForObject(String sql, Class t);
/**
* 执行SQL返回对象
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param param
* @param
* @return
*/
@Nullable
T selectForObject(String sql, Class t, Object... param);
/**
* 执行SQL返回对象
*
* @param sql
* @param t 对象、Map或者 String.class || Integer.class || Long.class || Boolean.class || Byte.class ||
* Double.class || Float.class || Short.class;
* @param param
* @param
* @return
*/
@Nullable
T selectForObject(String sql, Class t, List param);
/**
* 将查询结果转化为 map
*
* @param sql
* @return
*/
Map selectForMap(String sql);
/**
* 将查询结果转化为 map
*
* @param sql
* @param param
* @return
*/
Map selectForMap(String sql, Object... param);
/**
* 将查询结果转化为 map
*
* @param sql
* @param param
* @return
*/
Map selectForMap(String sql, List param);
/**
* 插入数据
*
* @param entity
* @return
*/
int insert(T entity);
/**
* 手动处理插入
*
* @param entity
* @param rc 回调函数
* @param
* @return
*/
int insert(T entity, ResultCallback rc);
/**
* 批量插入
*
* @param entity
* @param
* @return
* @throws FinalException
*/
int batchInsert(List entity) throws FinalException;
/**
* 插入返回主键值,若是联合主键,将只会返回一个key
*
* @param sql
* @param classType
* @param
* @return
*/
T insertReturnGeneratedKey(String sql, Class classType);
/**
* 插入返回主键值,若是联合主键,将只会返回一个key
*
* @param sql
* @param classType
* @param param
* @param
* @return
*/
T insertReturnGeneratedKey(String sql, Class classType, List