gpt4 book ai didi

java - 使用Spring进行数据库和网页集成

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:21 26 4
gpt4 key购买 nike

我正在编写我的第一个 java/DB/web 应用程序。我是 java/javascript/css/html 新手,所以这个项目对我来说是一次学习经历。该应用程序将在网页中显示数据库的结果,并允许用户从网页编辑/添加信息到数据库。

我使用的是spring,程序的大致流程如下:网页 -> 一些 javascript -> 引用 Rest 服务 -> 引用服务 -> 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,它们从单个查询返回结果。

很抱歉,如果这是解决此类问题的错误论坛。

最佳答案

我现在明白你的意思了。您可以做的是为 DML 和 DQL 查询创建单独的通用方法。

这些方法将接受查询和一个ResultSet(如果是DQL)或PreparedStatement(如果是DML)。同样,您可以根据您的需要将 DML 分为更新/删除/插入。

现在,当您收到查询时,您就知道该查询的用途。因此,将 ResultSetPreparedStatement 设置为适用的,并与其一起传递查询并获取结果。
如果不清楚,请告诉我。

关于java - 使用Spring进行数据库和网页集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com