gpt4 book ai didi

java - Spring 3.x + SimpleJdbcTemplate : Returning multiple columns

转载 作者:行者123 更新时间:2023-11-30 03:52:13 24 4
gpt4 key购买 nike

我正在使用 SimpleJdbcTemplateSpring 3.x。为了获取单个列,我使用下面的代码,它工作正常:

public String selectSingleColumn(int deptId){
return jdbcTemplate.queryForObject("SELECT DEPT_NAME FROM DEPT WHERE DEPT_ID = ?", String.class, deptId);
}

问题:

我想从上面的表中获取多个列,例如DEPT_NAMEDEPT_CODE(但不是所有属于该表的列),如何将上面的代码修改为完成它?在这种情况下,我对 queryForObject第二个参数感到困惑;理想情况下,我认为它应该是 Object[] 但仍然很困惑。请指导我。

最佳答案

我只需查询整个域对象,而不必为不同的列编写不同的查询。其一,它使 dao 更加可重用。

例如:

部门域对象

public class Department {
private long id;
private String deptName;
private String deptCode;
// other fields

// getters and setters
}

部门Dao

public class DepartmentDaoImpl extends JdbcTemplate implements DepartmentDao {

private static final String DEPT_BY_ID
= "select * from DEPARTMENT where DEPT_ID = ?";

@Override
public Department getDepartmentById(long id) {
return (Department) queryForObject(
DEPT_BY_ID,
new Object[] { id },
new RowMapper<Department>() {
@Override
public Department mapRow(ResultSet rs, int rowNumber) {
Department dept = new Department();
dept.setId(rs.getLong("DEPT_ID");
dept.setDeptName(rs.getString("DEPT_NAME");
dept.setDeptCode(rs.getString("DEPT_CODE");
// set other properties

return dept;
}
});
}
}

如果你真的真的只想要两列,你可以使用queryForMap

public class TestCustomerDao extends JdbcTemplate implements DepartmentDao {

private static final String FOR_MAP
= "select DEPT_NAME,DEPT_CODE from DEPARTMENT where DEPT_ID = ?";

@Override
public Map<String, Object> getCoupleColumnsById(long id) {
return (Map<String, Object>)queryForMap(FOR_MAP, new Object[] {id});
}
}

map 将返回为

   key        value
DEPT_NAME = value
DEPT_CODE = value

关于java - Spring 3.x + SimpleJdbcTemplate : Returning multiple columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153477/

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