当前位置: 首页 > 知识库问答 >
问题:

Spring JdbcTemplate选择别名表列

陶寒
2023-03-14

JdbcTransfersDao。java:

//row mapper
private TransfersHistory mapRowsToTransfersHistory(SqlRowSet rowset){
    TransfersHistory newTransfersHistory = new TransfersHistory();
    newTransfersHistory.setTransferId(rowset.getInt("transfer_id"));
    newTransfersHistory.setToFrom(rowset.getString("to_from"));
    newTransfersHistory.setAmount(rowset.getBigDecimal("amount"));

    return newTransfersHistory;
}

public TransfersHistory[] transfersHistoryByUserId(int loggedInUser){

    String sqlTransfersHistory = "select t.transfer_id, 'to: '||(select username from users as fu join accounts fa on fu.user_id = fa.user_id where account_id = t.account_from) as to_from, t.amount from transfers as t" +
            " where" +
            " t.account_to = (select account_id from accounts as ta join users tu on ta.user_id = tu.user_id where tu.user_id= ?)" +
            " union" +
            " select t.transfer_id, 'from: '||(select username from users as fu join accounts fa on fu.user_id = fa.user_id where account_id = t.account_to) as to_from, t.amount from transfers as t" +
            " where" +
            " t.account_from = (select account_id from accounts as ta join users tu on ta.user_id = tu.user_id where tu.user_id= ?);";
    
    SqlRowSet rs = jdbcTemplate.queryForRowSet(sqlTransfersHistory, loggedInUser);
    rs.getMetaData();
    List<TransfersHistory> tempTransfersHistory = new ArrayList<>();
    while (rs.next()){
        tempTransfersHistory.add(mapRowsToTransfersHistory(rs));
    }
    TransfersHistory[] tempTransferHistoryArr = new TransfersHistory[tempTransfersHistory.size()];
    tempTransfersHistory.toArray(tempTransferHistoryArr);
    return tempTransferHistoryArr;
}

控制器。Java语言

public List<TransfersHistory> transfersHistory(String base_url, AuthenticatedUser authenticatedUser){
    HttpHeaders headers = setupAuth(authenticatedUser);
    HttpEntity<?> entity = new HttpEntity<>(headers);
    ResponseEntity<TransfersHistory[]> res =  restTemplate.exchange(base_url + transfers_history_resource, HttpMethod.POST, entity, TransfersHistory[].class);
    List<TransfersHistory> tempTransfers = new ArrayList<>();
    tempTransfers = Arrays.asList(res.getBody());
    return tempTransfers;
}

转让。Java语言

public class TransfersHistory {
    private int transferId;
    private String toFrom;
    private BigDecimal amount;
}

共有1个答案

吕宸
2023-03-14

找到了答案。看起来像是<代码>。queryForRowSet()和。queryForObject()不喜欢SQL联合运算符,所以我不得不使用myPreparedStatement。executeQuery(mySql)。

 类似资料:
  • 问题内容: 我有2个表:table_a和table_b。两者都包含一个名为“ open”的列。 我想编写一个查询,返回以下内容 我尝试以下查询: 这将为table_a.open的每个值返回具有table_b.open的每个值的表 我可以在这里误解别名的正确用法。有任何想法吗? 问题答案: 这不是您遇到的别名问题。您正在表上执行创建直角坐标结果集的操作。 这会乘以您的结果集,因此的每一行都直接与中的

  • 问题内容: 有人知道为什么这对两个表别名“ x”都有效吗? 我知道ID为5的JOIN没有任何意义… 感谢您的教训! 问题答案: 下面的前两个查询是等效的。在连接的子句中,表别名仅指使用该别名的最后一个表,因此仅表受到限制。 在和表达式中,别名引用两个表-因此,列名是唯一的,则可以成功引用它们,但是,在列名相同的情况下,oracle会引发异常(如果删除了注释,则在查询3中会发生这种情况)。 我找不到

  • 问题内容: 我想了解MySQL中的某些特定行为。运行“ select @@ version”,我看到我的版本是5.6.34-log。 让我使用生成的表放置样本,以使其更易于重现: 正如标题所建议的那样,我最初搜索的是如何通过别名选择列,以便重用计算所得的字段,从而避免了冗长的查询。如文档中所述,大多数答案要么建议使用子查询,要么使用变量- 一种可读性差,而另一种则不能由自己的数据库开发人员来保证。

  • 我需要加密和解密一些列这样的。 这句话的意思是: 当我使用PersonRepository.findOneByParentId(10L)时;并查看日志 sql 是 这句话的意思是: 此错误消息: 这句话的意思是: 为什么@ColumnTransformer不添加列“name”的表别名,我该怎么办

  • 本文向大家介绍MySQL 使用别名选择(AS),包括了MySQL 使用别名选择(AS)的使用技巧和注意事项,需要的朋友参考一下 示例 SQL别名用于临时重命名表或列。它们通常用于提高可读性。 询问 (注意:  AS在语法上是可选的。) 结果            

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出