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

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

  •  
  •   wishining Jul 23, 2019 6387 views
    This topic created in 2486 days ago, the information mentioned may be changed or developed.

    目前:使用 mybatis

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

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

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

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

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

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

    比较规范的,是这样吗?
    cnzjl
        9
    cnzjl  
       Aug 19, 2019
    我一般都是拿实体类 domain 去接收,图省事就拿 Map,如果需要一些特别字段,就写个 Vo 吧
    About     Help     Advertise     Blog     API     FAQ     Solana     5747 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 93ms UTC 03:26 PVG 11:26 LAX 20:26 JFK 23:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86