如何映射两个彼此相互引用的表的行? 例如有Employee和Department表。员工可以参考作为员工部门的部门模型,部门可以参考部门经理的员工模型。那么我怎样才能做到使用Spring RowMapper映射行。Spring Jdbc映射行
感谢,
如何映射两个彼此相互引用的表的行? 例如有Employee和Department表。员工可以参考作为员工部门的部门模型,部门可以参考部门经理的员工模型。那么我怎样才能做到使用Spring RowMapper映射行。Spring Jdbc映射行
感谢,
我如何可以映射指对方两个表中的行?
例如像这样:
public class TwoTablesRowMapper implements RowMapper<Map<String, Object>> {
/**
* Map data from select over 2 tables e.g.:
*
* select
* A.foo as afoo,
* B.bar as bbar
* from PARENT A,
* CHILD B
* where A.ID = B.ID
*
*
* @param rs
* @param rowNum
* @return
* @throws SQLException
*/
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
Map<String, Object> resultMap = new HashMap<String, Object>();
// instead of a map one could fill an object
// e.g.: myObject.set.afoo(afoo)
resultMap.put("afoo", rs.getString("afoo"));
resultMap.put("bbar", rs.getString("bbar"));
return resultMap;
}
}
的SQL部分我建议你创建一个特定的SQL细节(表,关系等),一个新的问题和标记SQL,它应该找到更多的( sql-savvy)查看器
谢谢,这适用于关系不太复杂的小域对象。但实际上我希望每个模型类都有自己的映射类。例如:Employee模型有一个对Department的引用,当填充领域模型时,我需要Employee类来请求部门映射器类,以获取基于部门ID的引用部门实例。反之亦然。这意味着我试图从EJB这样的ORM工具中获得功能。 – Issa
除非我做这个映射,我不能像Employee emp = something;并调用emp.getDepartment()。getDepartmentName();或emp.getDepartment()。getManager()。firstName();请,你会建议我做正确的方法吗? – Issa
基本上你选择自编程映射或ORM,这是正确的方式?取决于你的需求,性能,预期的实现时间,预期的变化等等,如果你有多个这样的映射 - 我会去ORM(JPA2与Hibernate,TopLink和朋友),但是你需要ORM知识, ORM方面的其他陷阱:-) –
'RowMapper'适用于结果集,而不是表格。您需要编写正确的SQL,然后按照您选择的方式映射平面结果集。 – skaffman