package org.test4j.module.database.dbop;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.test4j.hamcrest.iassert.object.intf.ICollectionAssert;
import org.test4j.hamcrest.iassert.object.intf.IMapAssert;
import org.test4j.hamcrest.iassert.object.intf.IObjectAssert;
@SuppressWarnings("rawtypes")
public interface IDBOperator {
/**
* 提交数据
*
* @return
*/
IDBOperator commit();
/**
* 回滚未提交的数据
*
* @return
*/
IDBOperator rollback();
/**
* 清空指定的若干张表的数据
*
* @param table
* @param mores
* @return
*/
IDBOperator cleanTable(String table, String... mores);
/**
* 针对表进行操作
*
* @param table
* @return
*/
ITableOp table(String table);
/**
* 查询数据列表,并进行断言
*
* @param sql
* @return
*/
ICollectionAssert query(String sql);
/**
* 查询数据列表,并进行断言
*
* @param sql
* @param clazz
* @return
*/
ICollectionAssert queryList(String sql, Class clazz);
/**
* 查询数据,并且返回的数据只有一行<br>
* 将数据自动填充到Map<String,Object>中,并对数据进行断言
*
* @param sql
* @return
*/
IMapAssert queryAsMap(String sql);
/**
* 查询数据,并且返回的数据只有一行<br>
* 将数据自动填充到 pojo 类型的对象中,并且返回对象的断言器
*
* @param sql
* @param PoJo
* @return
*/
IObjectAssert queryAsPoJo(String sql, Class pojo);
/**
* 执行sql语句集合
*
* @param sqlSet
* @return
*/
IDBOperator execute(ISqlSet sqlSet);
/**
* 执行单条语句,执行多条请使用 execute(SqlSet)
*
* @param sql
* @return
*/
IDBOperator execute(String sql);
/**
* 执行文件中的sql语句
*
* @param sqlFile
* @return
*/
IDBOperator execute(File sqlFile);
/**
* 使用数据源来执行下列的数据库操作<br>
* dataSource的名称在test4j.properties文件中定义
*
* @param dataSource
* @return
*/
public IDBOperator useDB(String dataSource);
/**
* 使用test4j.properties中配置的默认数据源
*
* @return
*/
public IDBOperator useDefaultDB();
/**
* 返回表中所有的数据
*
* @param table
* @return
*/
List<Map<String, Object>> returnList(String table);
/**
* 返回表中所有的数据
*
* @param table
* @param pojoClazz
* @return
*/
<T> List<T> returnList(String table, Class<T> clazz);
/**
* 根据查询返回数据
*
* @param query
* @return
*/
List<Map<String, Object>> returnQuery(String query);
/**
* 根据查询返回映射数据
*
* @param query
* @param pojoClazz
* @return
*/
<T> List<T> returnQuery(String query, Class<T> clazz);
}