DBUnit在应用间导出导入数据

应用间的数据集成(EAI)通常是两条路子:
一是使用现成的EAI、ETL框架,定义一堆XML格式的映射文件,再写一些特殊转换的transform class。但这样的工程通常比较宏大,用到最后经常会发觉还不如自己写程序快。

二是直接自己写程序用JDBC->SQL转换,快则快矣,但经常会写的比较乱、特别是表多列多的时侯。

所以,我又会用万能老倌DBUnit+Dom4j来导出导入。
DBUnit因为具有xml 另外,它本身带了REFRESH(如果不存在就插入,否则就更新,以主键为依据), CLEAN_INSERT(全部删除再插入,和ReFresh比,会把不在XML中的数据删除)等几种操作,又简省了编程的功夫。

例子代码:

 
 

//Dom4j创建Document并向其赋值
Document document = DocumentHelper.createDocument();
document.addElement("dataset");
Element root = document.getRootElement();

while(rs.next())
{
item.attribute("bs").setValue(rs.getString("orderItemNo"));
root.add(item.createCopy());
}

//把Documenth转换为DBUnit的DataSet并解决中文编码问题
InputSource is = new DocumentSource(document).getInputSource();
is.setEncoding("GBK");
IDataSet dataSet = new FlatXmlDataSet(is);

//建立DBUnit数据库连接
Connection conn = .....;
DatabaseConnection dbCon = new DatabaseConnection(conn);

//执行插入操作
DatabaseOperation.INSERT.execute(dbCon, dataSet);


另外在我的项目中,目标数据库中有很多不明所以的列(约200个),不填呢又会出错,填呢又不知道填什么。所以,我先用DBUnit对它进行了采样,item是从目标数据库得到的一个样本,建立Document的过程中,我不断使用item.createCopy()把这条样本克隆出来,只置换了其中小部分源数据库中的需要更改的值。这又是DbUnit的一个Bonus :)[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8591181/viewspace-899284/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8591181/viewspace-899284/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值