目前:使用 mybatis
一般来说,一张表对应一个实体类。但是大多数时候,我们需要关联查询。迄今为止,我所待过公司除了少数查询结果使用实体类接收,其他都是使用 Map 返回(取值的时候比实体类麻烦得多)。那推荐使用实体类、还是 Map、还是看情况两者都用呢?
另外,每张表中的关联字段,在实体类中的对应的属性,应该如何设置好呢?比如有一张 student 表,一张 class 表,student 表中有一个 int 型的 class_id 字段。那我 Student.java 这个类里面对应的 classId 这个字段的类型应该是使用 Integer 还是 Clazz.java 这个类型呢?
上述两个问题,各个大公司中,比较规范的是哪种开发方式呢?
1
guo8345345 2019-07-23 10:52:49 +08:00
结合使用,单表的 CRUD 也不少。
用 Integer |
2
BestSera 2019-07-23 14:59:54 +08:00
再写个 Vo 类接收,里面可以包括实体类,这样既不像 map 一样太暴露也不会像实体类一样太死板
|
3
EastLord 2019-07-25 15:51:13 +08:00
DTO
|
4
za8800286 2019-07-25 17:15:20 +08:00
写个 vo 去继承咯 vo 实体类中就写一些拓展字段
|
5
zhouhu 2019-08-05 10:25:24 +08:00
实体类啊,不要想着偷懒。( map 一时爽,一直 map 一直爽)
|
6
wishining OP @zhouhu emmm,偷懒只是副产物,主要我不知道大点的,或者说开发比较规范的公司是什么一个情况。《阿里 Java 开发手册》上也没写。用 map 如果业务都能通过 SQL 解决倒方便,但是有很多时候要在业务层处理,写一堆 get,还要强转类型。。。
|
7
wishining OP 嗯,综合大家的说法,所以是 Dao 层返回 Entity 或者叫 DO,然后业务层对数据关联封装,返回 DTO,
|
8
wishining OP `Ctrl + Enter` 是直接发送吗 0.0
嗯,接上条。综合大家的说法和我之前在网上搜的一些,是: 1. Dao 层返回 Entity 或者叫 DO (包含连表查询),里面的每个字段与表字段一一对应(包括关联字段) 2. Service 业务层返回 DTO 类,在业务层里面封装关联关系,比如一对多的,“多”的那部分就作为“一”的一个 List 属性 3. 视图层返回 VO 类 比较规范的,是这样吗? |
9
cnzjl 2019-08-19 09:20:01 +08:00
我一般都是拿实体类 domain 去接收,图省事就拿 Map,如果需要一些特别字段,就写个 Vo 吧
|