【问题标题】:Get columns from a query with jdbcTemplate BeanPropertyRowMapper使用 jdbcTemplate BeanPropertyRowMapper 从查询中获取列
【发布时间】:2020-10-21 02:49:40
【问题描述】:

我有一个问题,我需要帮助。
问题是我正在尝试使用 jdbctemplate 获取查询结果并将结果映射到我的 File 类中。

我的类文件包含 3O 个属性:10 个 LONG、STRING 和 DATE 类型的属性。

@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,我无法修改类或查询的属性,是否有解决方案或您建议我做什么?

【问题讨论】:

    标签: java sql jdbc spring-jdbc jdbctemplate


    【解决方案1】:

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

    另一个选项是使用query(sql, rowMapper),您的rowMapper 将“手动”设置File 类中每一列所代表的内容。

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2011-07-08
      相关资源
      最近更新 更多