我的应用程序有2个sql表。 '用户'和'地点'
每个位置属于一个用户。位置表具有引用用户id的外键。
我想实现我的应用程序,以便给定用户(即'user1')我可以调用user1.getLocations()来检索与该用户关联的位置列表,但我不知道在哪里实现它。 (在User类中,UserDao上,UserManager上,控制器上应列出所有用户及其等的页面?)??
----编辑: 在控制器上:
List<User> users = userManager.getUsers();
for(User user:users) {
user.setLocations(locationManager.getLocations(user));
}
myModel.put("users", users);
return new ModelAndView("location", "model", myModel);
}
这是传统的解决方案吗? locationManager.getLocations(user)返回与用户ID相同的Locations List。
答案 0 :(得分:2)
很可能在 UserDao 类中,因为它听起来像是数据库操作。此方法应该更像是这个签名 userService.getLocations(userId),而不是 user1.getLocation(),user2.getLocation()。等。
您可以快速了解MVC pattern,详细了解Spring MVC和tuotrial。
您肯定需要从视图中将方法调用链接到dao。传统上它是这样做的:来自视图的请求(MVC中的V) - &gt;控制器调度(MVC中的C) - &gt;服务类(MVC中M的一部分) - &gt; dao类(也是M in的一部分) MVC)并通过翻转方向发送回视图。
答案 1 :(得分:1)
我的应用程序有2个sql表。 '用户'和'地点'
每个位置属于一个用户。该 location表有一个外键 引用用户的id。 我想实现我的应用程序,以便给予用户(即'user1')我可以打电话 user1.getLocations()用于检索与该用户关联的位置列表 ,但我不知道在哪里实现这个。
我不会创建一个单独的DAO方法来处理它,“user1.getLocations”是正确的方法。 Hibernate等人。支持延迟加载和表关系映射等实体之间的集合(如列表和集合),适用于这些情况。这是一个简单的例子,它可能不是开箱即用的,取决于你的表名如何命名等,但你会明白这一点:
@Entity
public class User
{
@OneToMany(mappedBy="user")
private List<Location> locations;
public List<Location> getLocations()
{
return locations;
}
}
@Entity
public class Location
{
@ManyToOne
@PrimaryKeyJoinColumn
private User user;
public User getUser()
{
return user;
}
}
请注意,您可以从用户端获取位置,即使数据库中的关系仅来自位置到用户(用户'@OneToMany中的“mappedBy”属性实际上告诉“另一方”中的哪个字段引用“(位置)指向此用户。”
我建议使用Spring教程查找一些JPA和/或Hibernate,以获得更深入的信息。