很多人在写代码的时候,不知道用Map好还是实体类好。
关于这个问题,网上有很多讨论,总结如下:
一、Map的优缺点:
优点:
- 灵活性强于javabean,易扩展,耦合度低;
- 写起来简单,代码量少;
- mybatis、hibernate 查询的返回结果本身就是MAP,可能会比返回javabean快;
- 便于存储数据,map有hash算法,读写比较快;
缺点:
- 数据类型的判断,map的数据类型要单独做判断,javabean在数据输入编译期就会对一些数据类型进行校验,如果出错会直接提示;
- map的key键名称如果写错或者有改动,不能直接判断出是不是字段写错,不利于调试和维护。javabean会在编译期间发现错误;
- 使用时不清楚Map中所拥有的参数个数、类型、每个key键代表的含义。 后期人员去维护,例如需要加一个参数,如果项目层次较多,就需要把每一层的代码都了解清楚才能知道传递了哪些key;
二、Javabean的优缺点
优点:
- 符合Java面向对象特性;
- 数据结构清晰,数据类型可以直接看到,含义可以写到注释上面,调用的时候,鼠标放上去就能看到什么含义,便于团队开发和后期维护;
- 代码足够健壮,可以排除掉编译期错误;
缺点:
- 代码量增多,需要时间去封装用到的表对象;
- 可能会影响开发效率没有Map高;
三、总结
如果从数据库拿到数据后直接返回给前端数据,用Map和javabean都可以,如果是传参或者拿到的数据被其它代码用到,还是javabean比较好。
权衡利弊,如果团队开发,还是javabean比较好,个人项目就无所谓了。追求高效开发,可以使用Map。
总体来说,javabean更胜一筹,长远来看,使用javabean比Map更好!