SQL 对象 API - 获取所有列?

SQL Objects API - Get all columns?

我在我的数据访问对象的以下代码行中使用 SQL 对象 API 从 SQL [=40= 中的一行中获取名称字段] 其中 ID 与提供的 ID 匹配。

@SqlQuery("select name from users where id = :id")
String findNameById(@Bind("id") int id);

一切都很好,但是如果我想 return table 中该行的所有字段,而不仅仅是名称,而是所有字段,我到底该怎么办该记录的列?

我确实尝试过使用:

"select * from users where id = :id"

但这不对,它似乎只是 return id 字段(可能因为它是 table 中的第一列,而我的方法 return 是一个字符串?)

无论如何,我对此一无所知,希望能得到所有帮助。


收到信息请求时的附加信息:

这是调用我的dao的控制器中我的方法的方法签名。

public String retrieveUserRecord(@PathParam("id") int id)

如你所见,它return是一个字符串,dao中的findNameByID方法也是...

我想做的是使用我的方法签名传递 id,并尽可能将我的所有列作为一个漂亮的 JSON 对象取回?

Return 当你想获取所有字段时,类型不应该是字符串。我假设你有 'USER' 这样的模型。

  public class User {
     private Integer id;
     private String name;

    public User(id, name) {
      this.id = id;
      this.name = name;
   }
  }

有一些方法可以将数据库结果映射到 Java 模型。您应该为 class 用户创建映射器。

 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.

中提到这个映射器
@SqlQuery("select * from users where id = :id")
@Mapper(UserMapper.class)
String retrieveUserRecord(@Bind("id") int id);

如果模型中有 setter 和 getter,您也可以使用 MapResultAsBean。

您也可以使用this library