org.test4j.module.database.dbop.DBOperator Maven / Gradle / Ivy
package org.test4j.module.database.dbop;
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import java.util.Map;
import org.test4j.hamcrest.iassert.object.impl.CollectionAssert;
import org.test4j.hamcrest.iassert.object.impl.MapAssert;
import org.test4j.hamcrest.iassert.object.impl.ObjectAssert;
import org.test4j.hamcrest.iassert.object.intf.ICollectionAssert;
import org.test4j.hamcrest.iassert.object.intf.IMapAssert;
import org.test4j.hamcrest.iassert.object.intf.IObjectAssert;
import org.test4j.module.database.dbop.IDBOperator;
import org.test4j.module.database.dbop.ISqlSet;
import org.test4j.module.database.dbop.ITableOp;
import org.test4j.module.database.environment.DBEnvironment;
import org.test4j.module.database.environment.DBEnvironmentFactory;
import org.test4j.module.database.utility.SqlRunner;
import org.test4j.tools.commons.ExceptionWrapper;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class DBOperator implements IDBOperator {
/**
* 是否在db操作
*/
public static ThreadLocal IN_DB_OPERATOR = new ThreadLocal();
static {
IN_DB_OPERATOR.set(false);
}
@Override
public IDBOperator useDB(String dataSource) {
IN_DB_OPERATOR.set(true);
try {
DBEnvironment environment = DBEnvironmentFactory.getDBEnvironment(dataSource);
DBEnvironmentFactory.changeDBEnvironment(environment);
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator useDefaultDB() {
IN_DB_OPERATOR.set(true);
try {
DBEnvironment environment = DBEnvironmentFactory.getDefaultDBEnvironment();
DBEnvironmentFactory.changeDBEnvironment(environment);
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator cleanTable(String table, String... more) {
IN_DB_OPERATOR.set(true);
try {
SqlRunner.instance.execute("delete from " + table);
for (String item : more) {
SqlRunner.instance.execute("delete from " + item);
}
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator execute(String sql) {
IN_DB_OPERATOR.set(true);
try {
SqlRunner.instance.execute(sql);
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator execute(File file) {
IN_DB_OPERATOR.set(true);
try {
try {
SqlRunner.instance.executeFromStream(new FileInputStream(file));
} catch (Exception e) {
throw ExceptionWrapper.wrapWithRuntimeException(e);
}
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator commit() {
IN_DB_OPERATOR.set(true);
try {
SqlRunner.instance.commit();
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator rollback() {
IN_DB_OPERATOR.set(true);
try {
SqlRunner.instance.rollback();
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IMapAssert queryAsMap(String query) {
IN_DB_OPERATOR.set(true);
try {
Map map = SqlRunner.instance.queryMap(query);
return new MapAssert(map);
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IObjectAssert queryAsPoJo(String query, Class objClazz) {
IN_DB_OPERATOR.set(true);
try {
Object o = SqlRunner.instance.query(query, objClazz);
return new ObjectAssert(o);
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public ICollectionAssert query(String sql) {
IN_DB_OPERATOR.set(true);
try {
List list = SqlRunner.instance.queryMapList(sql);
return new CollectionAssert(list);
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public ICollectionAssert queryList(String query, Class pojo) {
IN_DB_OPERATOR.set(true);
try {
List list = SqlRunner.instance.queryList(query, pojo);
return new CollectionAssert(list);
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public ITableOp table(String table) {
IN_DB_OPERATOR.set(true);
try {
ITableOp tableOperator = new TableOp(table);
return tableOperator;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public IDBOperator execute(ISqlSet sqlSet) {
IN_DB_OPERATOR.set(true);
try {
if (sqlSet == null) {
throw new RuntimeException("the insert sqlSet can't be null.");
}
sqlSet.execute();
return this;
} finally {
IN_DB_OPERATOR.set(false);
}
}
@Override
public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy