gpt4 book ai didi

java - 将参数传递给 mapRow

转载 作者:行者123 更新时间:2023-11-29 08:30:31 24 4
gpt4 key购买 nike

我需要向我的 RowMapper 传递一个参数,因为我需要将时区应用于日期字段。目前这是我的代码:

查询:

@Override
public List<GCProjectMember> selectGCMembers(Long jobId,String timezone) {

DataSource dataSource = DataSourceBeanBuilder.getClientDataSource(ClientContextHolder.getCustomerType(),
this.getClass().getName());
this.setDataSource(dataSource);

List<GCProjectMember> membersList = getJdbcTemplate().query(SELECT_GC_MEMBERS, new Object[] { jobId },
new GCProjectMemberRowMapper());
if (membersList.size() > 0) {
return membersList;
} else {
return Collections.emptyList();
}
}

行映射器:

public class GCProjectMemberRowMapper extends BasicRowMapper implements RowMapper<GCProjectMember> {

@Override
public GCProjectMember mapRow(ResultSet rs, int rowNum) throws SQLException {
GCProjectMember member = new GCProjectMember();
...
if (hasColumn(rs, "sign_date")) {
member.setSignDate(rs.getTimestamp("sign_date"));
}

....
return member;
}

}

我如何将时区从查询传递到行映射器?

最佳答案

您可以在 GCProjectMemberRowMapper 中创建一个参数化构造函数,并在初始化对象时将时区值传递给它。

public class GCProjectMemberRowMapper extends BasicRowMapper implements RowMapper<GCProjectMember> {

private TimeZone timezone;

public GCProjectMemberRowMapper(TimeZone timezone) {
this.timezone = timezone
}
@Override
public GCProjectMember mapRow(ResultSet rs, int rowNum) throws SQLException {
GCProjectMember member = new GCProjectMember();
...
if (hasColumn(rs, "sign_date")) {
member.setSignDate(rs.getTimestamp("sign_date"));
}
// use timezone here
....
return member;
}

可以这样改调用代码。

@Override
public List<GCProjectMember> selectGCMembers(Long jobId,String timezone) {

DataSource dataSource = DataSourceBeanBuilder.getClientDataSource(ClientContextHolder.getCustomerType(),
this.getClass().getName());
this.setDataSource(dataSource);

List<GCProjectMember> membersList = getJdbcTemplate().query(SELECT_GC_MEMBERS, new Object[] { jobId },
new GCProjectMemberRowMapper(timezone));
if (membersList.size() > 0) {
return membersList;
} else {
return Collections.emptyList();
}
}

关于java - 将参数传递给 mapRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48702539/

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