Jdbc DAO类中的CPD错误
我有一个DAO类,它有多个方法。在每个方法中,我对ResultSet使用变量名result,对PreparedStatement使用语句,并使用closeResources方法关闭PreparedStatement和连接。我使用了一个DataManager类,它有createConnection方法getConnection方法。在我的DAO中有10种方法。我使用DAO工厂方法在BO中获取DAO对象。这是一段代码,当我在eclipse中运行CPD工具时显示为冲突。它在我的DAO的大约6到8个方法中将这段代码显示为冲突Jdbc DAO类中的CPD错误,jdbc,dao,naming-conventions,cpd,spring,Jdbc,Dao,Naming Conventions,Cpd,Spring,我有一个DAO类,它有多个方法。在每个方法中,我对ResultSet使用变量名result,对PreparedStatement使用语句,并使用closeResources方法关闭PreparedStatement和连接。我使用了一个DataManager类,它有createConnection方法getConnection方法。在我的DAO中有10种方法。我使用DAO工厂方法在BO中获取DAO对象。这是一段代码,当我在eclipse中运行CPD工具时显示为冲突。它在我的DAO的大约6到8个方法
PreparedStatement statement=null;
try{
PreparedStatement statement=connection.prepareStatement(query);
//statements to set data in query
ResultSet result=statement.executeQuery();
if(result.next){
//some operation
}
}
catch(SQLException e){
//encapsulating sql exception....
throw new BusinessException(e);
}
finally{
closeResources(connection,statement);
}
由于DAO中的许多方法使用相同的方法,CPD将上述代码显示为冲突,我认为您无法使这段代码更模块化。我的问题是,在许多方法中使用相同的变量名(如result)是否是最佳做法。要清除冲突,我需要将结果重命名为result1,结果2等,但我觉得这些名称没有意义
注意:我的培训已经结束。我没有研究Spring或Struts,我只知道Servlet和JSP。我正在做一个案例研究,这是我第一次使用PMD、CPD工具。使用模式:
您可以这样使用您的方法:
runQuery(new Callback() {
public void onRow(ResultSet result) {
//extract one row here
}
});
唯一改变的代码是各种回调实现,从不同的表中提取行。一旦您熟悉了这个模式,请查看它是围绕这个想法构建的,但是它的功能要强大得多,但仍然是低级和快速的。您不需要使用完整的代码。谢谢您的及时回复。但我不清楚您的代码回调结果;`回调是一个引用,它是如何接受一个参数的。@user701199:我的代码中有一个错误,现在清楚了吗?传递的回调接口的单个onRow方法被多次调用。
runQuery(new Callback() {
public void onRow(ResultSet result) {
//extract one row here
}
});