org.test4j.module.database.enviroment.DBEnvironment Maven / Gradle / Ivy
package org.test4j.module.database.enviroment;
import cn.org.atool.fluent.mybatis.metadata.DbType;
import org.test4j.functions.EConsumer;
import org.test4j.functions.EFunction;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public interface DBEnvironment {
/**
* 数据库类型
*
* @return DataSourceType
*/
DbType getDbType();
/**
* 执行sql语句
*
* @param sql sql
* @param executor statement consumer
*/
void execute(String sql, EConsumer executor);
/**
* 执行sql语句 bb
*
* @param statementEFunction statement function
* @param executor statement consumer
*/
void execute(EFunction statementEFunction,
EConsumer executor);
/**
* 查询
*
* @param statementEFunction statement function
* @param resultFunction result function
* @param 结果类型
* @return 结果
*/
R query(EFunction statementEFunction,
EFunction resultFunction);
/**
* 查询
*
* @param sql sql
* @param resultFunction result function
* @param 结果类型
* @return 查询结果
*/
R query(String sql, EFunction resultFunction);
/**
* 获得数据表的元信息
*
* @param table table name
* @return table meta
*/
TableMeta getTableMetaData(String table);
/**
* 返回指定类型的默认值
*
* @param javaType java type name
* @return default value
*/
Object getDefaultValue(String javaType);
/**
* 将字符串类型转换为java对象
*
* @param input string value
* @param javaType java type
* @return object of java type
*/
Object toObjectValue(String input, String javaType);
void commit();
void rollback();
/**
* 用反义符将字段包裹起来
*
* @param column 字段名称
* @return 包裹起来的字段
*/
default String wrapper(String column) {
return this.getDbType().wrap(column);
}
Object convertToSqlValue(Object value);
}