我在数据访问对象的以下代码行中使用SQL对象API从SQL表中的一行获取名称字段,其中ID与提供的ID匹配。
@SqlQuery("select name from users where id = :id")
String findNameById(@Bind("id") int id);
这一切都很好,但如果我想返回表格中该行的所有字段,而不仅仅是名称,还有该记录的所有字符串,我该怎么做呢?
我确实尝试过使用:
"select * from users where id = :id"
但是这不对,它似乎只返回id字段(可能因为它是表中的第一列,我的方法返回一个字符串?)
无论如何,我完全没有这方面的想法,并希望得到所有帮助。
我收到信息请求时的其他信息:
这是调用我的dao的控制器中我方法的方法签名。
public String retrieveUserRecord(@PathParam("id") int id)
如您所见,它返回一个字符串,dao中的findNameByID方法也是如此...
我想要做的是使用我的方法签名传递id,如果可能的话,将我的所有列作为一个好的JSON对象返回?
答案 0 :(得分:4)
当您想要获取所有字段时,返回类型不应该是字符串。我假设你有'用户'像这样的模特。
public class User {
private Integer id;
private String name;
public User(id, name) {
this.id = id;
this.name = name;
}
}
有一些方法可以将DB结果映射到Java模型。您应该为类用户创建映射器。
public class UserMapper<User> implements ResultSetMapper<User> {
public User map(int row, ResultSet rs, StatementContext ctx) throws SQLException {
return new User(rs.getInt("id"), rs.getString("name") );
}
}
你应该在sqlObject api中提到这个mapper。
@SqlQuery("select * from users where id = :id")
@Mapper(UserMapper.class)
String retrieveUserRecord(@Bind("id") int id);
如果你有setter&amp; amp;还可以使用MapResultAsBean。模特中的傻瓜。
您也可以使用this library。