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

Java 数据查询,使用 Map 还是实体类封装?

  •  
  •   wishining · 117 天前 · 1196 次点击
    这是一个创建于 117 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前:使用 mybatis

    一般来说,一张表对应一个实体类。但是大多数时候,我们需要关联查询。迄今为止,我所待过公司除了少数查询结果使用实体类接收,其他都是使用 Map 返回(取值的时候比实体类麻烦得多)。那推荐使用实体类、还是 Map、还是看情况两者都用呢?

    另外,每张表中的关联字段,在实体类中的对应的属性,应该如何设置好呢?比如有一张 student 表,一张 class 表,student 表中有一个 int 型的 class_id 字段。那我 Student.java 这个类里面对应的 classId 这个字段的类型应该是使用 Integer 还是 Clazz.java 这个类型呢?

    上述两个问题,各个大公司中,比较规范的是哪种开发方式呢?

    9 回复  |  直到 2019-08-19 09:20:01 +08:00
        1
    guo8345345   117 天前
    结合使用,单表的 CRUD 也不少。
    用 Integer
        2
    BestSera   116 天前
    再写个 Vo 类接收,里面可以包括实体类,这样既不像 map 一样太暴露也不会像实体类一样太死板
        3
    EastLord   114 天前
    DTO
        4
    za8800286   114 天前
    写个 vo 去继承咯 vo 实体类中就写一些拓展字段
        5
    zhouhu   104 天前
    实体类啊,不要想着偷懒。( map 一时爽,一直 map 一直爽)
        6
    wishining   104 天前
    @zhouhu emmm,偷懒只是副产物,主要我不知道大点的,或者说开发比较规范的公司是什么一个情况。《阿里 Java 开发手册》上也没写。用 map 如果业务都能通过 SQL 解决倒方便,但是有很多时候要在业务层处理,写一堆 get,还要强转类型。。。
        7
    wishining   104 天前
    嗯,综合大家的说法,所以是 Dao 层返回 Entity 或者叫 DO,然后业务层对数据关联封装,返回 DTO,
        8
    wishining   104 天前
    `Ctrl + Enter` 是直接发送吗 0.0

    嗯,接上条。综合大家的说法和我之前在网上搜的一些,是:

    1. Dao 层返回 Entity 或者叫 DO (包含连表查询),里面的每个字段与表字段一一对应(包括关联字段)
    2. Service 业务层返回 DTO 类,在业务层里面封装关联关系,比如一对多的,“多”的那部分就作为“一”的一个 List 属性
    3. 视图层返回 VO 类

    比较规范的,是这样吗?
        9
    cnzjl   90 天前
    我一般都是拿实体类 domain 去接收,图省事就拿 Map,如果需要一些特别字段,就写个 Vo 吧
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2164 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    ♥ Do have faith in what you're doing.