关于 MyBatis + MySQL 返回值的一个疑惑

2017-04-18 23:54:37 +08:00
 qiyuey

对象如下:

public class DateRange {
    private Integer startDate;
    private Integer endDate; 
}

DAO 如下:

@Select("SELECT MIN(date) AS startDate, MAX(date) AS endDate FROM atable WHERE aid = #{aid}")
DateRange getDateRangeById(@Param("aid") int aid);

Client 结果如下:

*************************** 1. row ***************************
startDate: NULL
endDate: NULL
1 row in set (0.00 sec)

当没有 aid 对应的记录时,我期望 DateRange 是存在的, startDate 、 endDate 为 null ,但是实际情况是 DateRange 为 null ,这令我很困惑,求助各位 V 友出现这种结果的原因。

2692 次点击
所在节点    Java
4 条回复
qiyuey
2017-04-18 23:55:31 +08:00
或者放到 Java 里比较合适?
sagaxu
2017-04-19 00:42:34 +08:00
returnInstanceForEmptyRow
qiyuey
2017-04-19 01:18:03 +08:00
@sagaxu 已解决,非常感谢,不过还是觉得 MyBatis 的默认设置不合理
LeeSeoung
2017-04-19 09:16:07 +08:00
那假如有人想判断返回的值是否全为空(比如找不到这条记录,对应的所有值为空)那如果该不通过判断该对象是否为空,而是把所有值都判断一遍。。在这种场景下。。是不是 mybatis 的默认设置就合理了。。(手动滑稽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX