使用dbunit的時候遇到一個問題,就是我要將NULL的資料insert進去,該如何做呢?
原來只要使用如:
ReplacementDataSet dataSet = new ReplacementDataSet(srcDataSet);
dataSet.addReplacementObject("[NULL]", null);
就可以將指定的字串替換為null,之後再使用這個替換過的dataset依照原本使用dbunit的方式insert就可以囉~
ReplacementDataSet dataSet = new ReplacementDataSet(srcDataSet);
dataSet.addReplacementObject("[NULL]", null);
public static ITable filterXmlDataCol(
String xmlDataFile, String tableName,IDatabaseConnection conn
, final String expectColNames[] , final Object expectColVals[]) throws Exception {
IDataSet databaseDataSet = getDataSetFromXmlFile(xmlDataFile);
ITable actualTable = databaseDataSet.getTable(tableName);
IRowFilter rowFilter = new IRowFilter() {
@Override
public boolean accept(IRowValueProvider rowValueProvider) {
try {
for(int i=0 ; i< expectColNames.length ; ++i){
Object columnValue = rowValueProvider.getColumnValue(expectColNames[i]);
if (!columnValue.equals(expectColVals[i]))
return false;
}
return true;
} catch (DataSetException ex) {
ex.printStackTrace();
}
return false;
}
};
RowFilterTable filteredRowsTable = new RowFilterTable(
actualTable, rowFilter);
return filteredRowsTable;
}
ITable expect = DBUnitUtilities.filterXmlDataCol("datasheet\\FactoryInfo.xml","FactoryInfo"
, _dbunitConnection,new String[]{"name","product"},new String[]{"17公司","tales"} );
private MsSqlConnection _dbunitConnection;
@Before
public void setUp() throws Exception {
_dbunitConnection = new MsSqlConnection(DBUnitUtilities.createHsqlDBConnection(), null);
//do something setup..
}
IDataSet setup = DBUnitUtilities.getDataSet("datasheet\\Banner11.xml");
DatabaseOperation.CLEAN_INSERT.execute(_dbunitConnection,setup);
QueryDataSet data = new QueryDataSet(_dbunitConnection);
data.addTable("TableName","select * from TableName where id="+value );
data.addTable("TableName","select * from TableName where id='"+value+"'");