gpt4 book ai didi

java - Spring JDBCTemplate : is it okay to call a DAO method inside RowMapper?

转载 作者:行者123 更新时间:2023-11-30 06:19:06 25 4
gpt4 key购买 nike

假设我们在一个对象中有一个对象。假设我们有引用 owner_id 和所有者表的数据库表 car。

我们的领域对象 car references Person:

public class Car {
public class Person person;
}

所以假设我们有一个用于 Car 的 DAO 和一个用于 Person 的 DAO,是否可以在 CarDao 中 Autowiring PersonDao,并从 CarDao 的 RowMapper 中查询 Person 并将其添加到 car 对象中?我对此进行了测试并且它有效,但我想问更多它是否被认为是不良形式或做法以及原因。

最佳答案

我肯定会将其归类为糟糕的形式,因为数据库调用应该是单数的。

您可以尝试分别调用 DAO 并从这两个调用中组合您的 Car 实例

List<Car> cars = carDao.getCars();
List<Person> people = personDao.getPeople();
for (int i=0; i<cars.size(); i++){
cars.get(i).setPerson(people.get(i));
}

或者创建一个连接查询来生成您需要的所有结果,并在 RowMapper 中创建适当的对象:

jdbcTemplate.query("SELECT c.name, c.serialNumber, p.name FROM Car c INNER JOIN Person p ON c.id = p.carId", .., .., new RowMapper<Car> {
public Car mapRow(ResultSet rs, int rowNum) throws SQLException {
String carName = rs.getString(1);
String carSerialNumber = rs.getInt(2);
String personName = rs.getString(3);
Car car = new Car();
car.setName(carName);
car.setSerialNumber(serialNumber);
Person person = new Person();
person.setName(personName);
car.setPerson(person);
return car;
}
});

注意:我按原样编写了代码并且没有对其进行测试,但无论如何这是我使用 JDBC 的方式。

关于java - Spring JDBCTemplate : is it okay to call a DAO method inside RowMapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708230/

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