繁体   English   中英

使用 jdbcTemplate BeanPropertyRowMapper 从查询中获取列

[英]Get columns from a query with jdbcTemplate BeanPropertyRowMapper

我有问题,我需要帮助。
问题是我正在尝试使用 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));

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM