[英]How to mock jdbctemplate query with 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.