作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要向我的 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/
我需要向我的 RowMapper 传递一个参数,因为我需要将时区应用于日期字段。目前这是我的代码: 查询: @Override public List selectGCMembers(Long
我是一名优秀的程序员,十分优秀!