【发布时间】:2017-08-01 01:14:26
【问题描述】:
有一个简单的 SQL 表,例如:
NOTIFICATION (ID, NAME, NOTIF_DATE, ...)
我正在使用以下代码从我的后端应用程序执行 SQL 查询:
this.findBySQL(MY_SQL_QUERY, params...);
SQL SELECT QUERY 正确执行并返回预期的行。我面临的问题是返回的行被包装到 Object[],但是在此查询之后,我想使用 Java 过滤结果8 流和过滤功能。
我希望将结果映射到我的自定义对象通知,如下所示:
Notification { long id, String name, Date notif_date, ... }
我可以创建自己的映射器,从查询中得到的 Object 中获取结果值,例如:
Notification not = new Notification();
not.setName(obj[1]);
...
但我认为这种方法不是一个好的实现,因为它取决于返回的列的顺序,并且我必须为要设置的每个属性编写代码。
有没有办法从这个 Object[] 映射到我的 Notification?
提前感谢并为糟糕的代码感到抱歉,但我没有更好的方法来解决这个问题。
【问题讨论】:
-
嗯,你应该知道返回列的顺序,所以这应该不是问题。
-
列顺序依赖性(如果存在)是您的
findBySQL()方法的一个特征。如果您无法可靠地预测您从中收到的Object[]元素的顺序和含义,那么当您收到该表单中的数据时,您已经迷失了方向。如果您可以预测列顺序,那么我看不出问题出在哪里。 -
是的,我可以预测顺序,但我仍然需要设置我的 Noitification 的每个属性。
标签: java sql java-8 mapping java-stream