Java Jdbc模板集列表对象属性与行映射器
我在读这篇文章: 这个答案似乎很好: 然而,我想到了另一种情况,直到现在我才找到合适的答案: 如果我的message类中有一个用户列表,该怎么办Java Jdbc模板集列表对象属性与行映射器,java,spring,postgresql,jdbctemplate,Java,Spring,Postgresql,Jdbctemplate,我在读这篇文章: 这个答案似乎很好: 然而,我想到了另一种情况,直到现在我才找到合适的答案: 如果我的message类中有一个用户列表,该怎么办 class User { Long id; String name; } class Message { Long id; String name; List<User> users; } 类用户{ 长id; 字符串名; } 类消息{ 长id; 字符串名; 列出用户名单; } 甚至可以使用sql请求手动
class User {
Long id;
String name;
}
class Message {
Long id;
String name;
List<User> users;
}
类用户{
长id;
字符串名;
}
类消息{
长id;
字符串名;
列出用户名单;
}
甚至可以使用sql请求手动(无jpa或crud存储库)和行映射器为一条消息映射每个用户,并生成类似的内容吗
public class MessageMapper implements RowMapper<Message> {
public Message mapRow(ResultSet rs, int i) throws SQLException{
Message message= new Message();
message.setId(rs.getLong("messageId");
message.setName(rs.getString("messageName"));
User user = new User();
// or List<User> users = new ArrayList<>(); ??? ...
user.setUsers(users);
return message ;
}}
public类MessageMapper实现行映射器{
公共消息mapRow(ResultSet rs,int i)引发SQLException{
消息消息=新消息();
message.setId(rs.getLong(“messageId”);
message.setName(rs.getString(“messageName”);
用户=新用户();
//或列表用户=新建ArrayList()。。。
user.setUsers(用户);
返回消息;
}}
谢谢!您是否查看了
org.springframework.jdbc.core.ResultSetExtractor
界面及其org.springframework.jdbc.core.RowMapperResultSetExtractor
实现?是的,但我不明白您的目的是什么?问题是什么?首先编写返回消息及其用户的查询.Exe喜欢它,看看每一行包含什么。然后思考你的问题,问问你自己:每一行是否代表所有用户的一条消息?@JBNizet很抱歉。嗯,我理解这似乎是不可能的。我的第一个想法是像sql查询一样(没有尝试过,我只是在想):选择m.id作为messageId,选择m.name作为messageName,选择array\u agg(不同的(m.name | |’:“| | u.name”)作为message和message中的用户m left join user_message um on um.message|id=m.id left join user u on u.id=um.user|id其中m.id=1 group by m.id
,但我想这样连接并与RowMapper一起使用是不可能的。谢谢!