我正在编写我的第一个 java/DB/web 应用程序。我是 java/javascript/css/html 的新手,所以这个项目对我来说是一次学习经历。该应用程序将在网页中显示来自数据库的结果,还允许用户从网页编辑/添加信息到数据库。
我用的是spring,程序的大体流程如下:Web Page -> some javascript -> Reference Rest Service -> Reference Service -> DAO -> DTO -> DB
问题是应用程序当前对每个查询都有不同的 DAO 和 DTO。我想简化程序,以便有一个可以处理所有查询的 DAO 和 DTO。
我正在尝试创建一个可以处理 2 到 10 个不同插槽的 DTO,我希望每个插槽都有一个名称而不是与之关联的数字。我也相信插槽的名称应该由数据库的返回来设置。然后我需要一种可靠的方法将数据映射到 DAO 中的行。我将发布一些简单的示例代码来展示我正在使用的内容。
@Repository
public class DecisionLevelDaoImpl implements DecisionLevelDao {
private JdbcTemplate jdbcTemplate;
@Autowired
public DecisionLevelDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
private static String FIND_ACTIVE_DECISION_LEVEL = DaoHelper
.loadResourceToString("queries/DecisionLevel_FindActive.sql");
@Override
public List<DecisionLevelDTO> findActiveDecisionLevel() {
return jdbcTemplate.query(FIND_ACTIVE_DECISION_LEVEL, new DecisionLevelDTORowMapper());
}
private class DecisionLevelDTORowMapper implements RowMapper<DecisionLevelDTO> {
@Override
public DecisionLevelDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
String levelCd = rs.getString("LevelCd");
String levelName = rs.getString("LevelName");
String levelInstruct = rs.getString("LevelInstruct");
String active = (rs.getBoolean("active") ? "Y" : "N");
String printOrder = Integer.toString(rs.getInt("PrintOrder"));
String lastUpdUser = rs.getString("LastUpdUser");
return new DecisionLevelDTO (levelCd, levelName,
levelInstruct, active, printOrder,lastUpdUser);
}
}
这是 DTO:
import org.codehaus.jackson.annotate.JsonProperty;
public class DecisionLevelDTO {
@JsonProperty("levelCd")
private String levelCd;
@JsonProperty("levelName")
private String levelName;
@JsonProperty("levelInstruct")
private String levelInstruct;
@JsonProperty("active")
private String active;
@JsonProperty("printOrder")
private String printOrder;
@JsonProperty("lastUpdUser")
private String lastUpdUser;
public DecisionLevelDTO () { }
public DecisionLevelDTO (String levelCd, String levelName,
String levelInstruct, String active, String printOrder,
String lastUpdUser) {
super();
this.levelCd = levelCd;
this.levelName = levelName;
this.levelInstruct = levelInstruct;
this.active = active;
this.printOrder = printOrder;
this.lastUpdUser = lastUpdUser;
}
目前大约有 25 个 Dao 和 25 个 DTO。这似乎非常重复,我很想找到一种更易于维护的方法。
我不是在寻找任何人来编写我的代码,我这样做是为了学习,所以免费代码根本对我没有帮助。我看到的所有教程都有一个 DAO 和一个 DTO,它们从单个查询返回结果。
抱歉,如果这是此类问题的错误论坛。