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

使用 jdbcTemplate BeanPropertyRowMapper 从查询中获取列

仉洲
2023-03-14

我有问题,需要帮助。
问题是我正在尝试使用 jdbctemplate 和映射获取查询的结果,该结果导致我的 File 类。

我的类文件包含3O个属性:10个长、字符串和日期类型的属性。

@Table (name = "UZTFILE", schema = "UTIC")
public class File implements Serializable {
     private static final long serialVersionUID = 1L;

     @Column (name = "UZTFILE_STRING1")
     private String text1;

     @Column (name = "UZTFILE_STRING2")
     private String text2;

     @Column (name = "UZTFILE_STRING3")
     private String text3;

     @Column (name = "UZTFILE_STRING4")
     private String text4;

     @Column (name = "UZTFILE_STRING5")
     private String text5;

     @Column (name = "UZTFILE_STRING6")
     private String text6;
       ......
     @Column (name = "UZTFILE_STRING10")
     private String text10;

     @Column (name = "UZTFILE_NUMBER1")
     private Long number1;

     @Column (name = "UZTFILE_NUMBER2")
     private Long number2;

     @Column (name = "UZTFILE_NUMBER3")
     private Long number3;

     @Column (name = "UZTFILE_NUMBER10")
     private Long number10;

--getters and setters and constructors ---

我正在执行的查询:

List <File> files = new ArrayList <File> ();
// Query to execute
String query = "SELECT UZF1.UZTFILE_STRING1 AS INSTRUCCIONDECOBRO, UZF1.UZTFILE_STRING2 AS COUNTERPART, UZF1.UZTFILE_STRING3 AS CURRENCY VALUE AS UZF1.UZTFILE_NUMBER2, UZF1.UZTFILE_STRING4 AS FORMADECOBRO, UZF1.UZTFILE_STRING5 AS TIPOCUENTA, UZF1.UZTFILE_STRING6 AS NROCUENTA, UZF1.UZTFILE_STRING7 AS REFERENCE, UZF1.UZTFILE_STRING8 AS TYPEIDENTIFICATION, UZF1.UZTFILE_STRING9 AS NROIDENTIFICATION, UZF1.UZTFILE_STRING10 as NAMES FROM UZTFILE UZF1 ";

// Execution of the query
   files = jdbcTemplate.query (query, new BeanPropertyRowMapper <> (File.class));

当执行查询时,它不会给我一个错误,一切都是正确的,但是当显示结果时,列出来为空,错误是由于我使用的查询使用别名,别名与File类的属性名称不匹配。

这就是我的问题或查询,因为我不能更改类属性的名称,也不能从查询中删除别名,因为使用了不同的查询,每个查询使用不同的别名。例如:

String query1= "SELECT UZF1.UZTFILE_STRING1 AS INSTRUCCIONDECOBRO, UZF1.UZTFILE_NUMBER2 AS AGE, MORE FIELDS WITH ALIASES..... FROM UZTFILE WHERE "condicion"";
//Query 2
String query2= "SELECT UZF1.UZTFILE_STRING1 AS NOMBRES, UZF1.UZTFILE_NUMBER2 AS SIZE, MORE FIELDS WITH ALIASES........ FROM UZTFILE Where "condicion";

问题出在无法识别别名的 BeanPropertyRowMapper 上,我无法修改类或查询的属性,是否有解决方案或您建议我做什么?

共有1个答案

林正平
2023-03-14

您要么需要使SQL统一,即在调用SQL时使用相同的别名,正如您所说,类中的@Column映射需要匹配查询中返回的列。

另一个选项是使用查询(sql,rowMapper),其中您的rowMapperclass中每列表示的内容。

 类似资料:
  • 我有一个存储库,我正试图用它从序列中获取下一个值。我需要参数化序列名。 存储库查询类似于: @query(value=“select?1.nextval from dual;”,nativeQuery=true)字符串getSeqID(@param(“seqName”)字符串seqName);

  • 问题内容: 在我的代码中,我正在使用。 然后,我执行该方法以填充准备好的语句的通配符。 在调用该方法并执行查询之前,我是否有办法检索(并打印出)最终查询?我只想将此用于调试目的。 问题答案: 这在JDBC API合同中没有定义,但是如果幸运的话,有问题的JDBC驱动程序可以通过调用来返回完整的SQL 。即 以我的经验,至少这样做是PostgreSQL 8.x和MySQL 5.x JDBC驱动程序。

  • 问题内容: 我在Oracle数据库11g中使用Pl / SQL。 我正在编写一个将select语句作为参数(varchar2)的函数。该函数使用for循环遍历行并将格式应用于特定的列,并输出整个内容。基本上,我需要某种方式来获取列名,以便可以在顶部显示它们。我知道有多种方法可以对表执行此操作,但是由于传入了此查询,因此可能未选择所有列,可能已使用别名等。 有没有一种方法可以从此查询中选择列名? 理

  • 问题内容: 根据MSDN,返回已执行查询的列元数据。我想知道是否有类似的方法将为给定查询提供表元数据?我的意思是涉及哪些表以及它具有什么别名。 在我的应用程序中,我得到了查询,并且需要以编程方式附加该子句。使用,我可以获取列元数据及其所属的表。但是,即使表具有别名,它仍然会返回真实的表名。有没有办法获取该表的别名? 以下代码显示如何获取列元数据。 这将为我正确提供列的详细信息。但是当我看到列时,它

  • 问题内容: 我正在尝试连接到数据库,运行查询并打印出查询。到目前为止,我已经完成了工作,但是我需要获取输出并将其中的特定部分分配给 我正在使用log4jdbc监视我的查询。 此刻,我得到如下记录的输出: 我想分配给。我该怎么做呢? 问题答案: 通常,a 将为您提供查询(包括绑定参数)。但这取决于的实际实现(例如,使用PostgreSQL隐式实现)。 您提到为您带来回报。我对 log4jdbc 并不

  • 问题内容: 我有一个proyect用于加载查询: 在“ SELECT_BY_USER_ID”上是正常的字符串查询。 我在jar外部有一个YML配置,用于加载不同的配置,并且我也想使用此YML来加载查询。 示例YML: 但是我不知道如何直接从@Query值中的文件中加载,我试图这样做: 我能怎么做?谢谢。 问题答案: 如果您需要从资源文件夹中加载SQL,可以尝试使用spring-data- sqlf