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

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

  •  
  •   wishining · 2019-07-23 10:34:56 +08:00 · 5662 次点击
    这是一个创建于 1955 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前:使用 mybatis

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

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

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

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

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

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

    比较规范的,是这样吗?
    cnzjl
        9
    cnzjl  
       2019-08-19 09:20:01 +08:00
    我一般都是拿实体类 domain 去接收,图省事就拿 Map,如果需要一些特别字段,就写个 Vo 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5363 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.