V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qiyuey
V2EX  ›  Java

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

  •  
  •   qiyuey · 2017-04-18 23:54:37 +08:00 · 2779 次点击
    这是一个创建于 2777 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对象如下:

    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 友出现这种结果的原因。

    4 条回复    2017-04-19 09:16:07 +08:00
    qiyuey
        1
    qiyuey  
    OP
       2017-04-18 23:55:31 +08:00
    或者放到 Java 里比较合适?
    sagaxu
        2
    sagaxu  
       2017-04-19 00:42:34 +08:00
    returnInstanceForEmptyRow
    qiyuey
        3
    qiyuey  
    OP
       2017-04-19 01:18:03 +08:00 via Android
    @sagaxu 已解决,非常感谢,不过还是觉得 MyBatis 的默认设置不合理
    LeeSeoung
        4
    LeeSeoung  
       2017-04-19 09:16:07 +08:00
    那假如有人想判断返回的值是否全为空(比如找不到这条记录,对应的所有值为空)那如果该不通过判断该对象是否为空,而是把所有值都判断一遍。。在这种场景下。。是不是 mybatis 的默认设置就合理了。。(手动滑稽
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1235 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.