当前位置: 首页 > 图灵资讯 > 技术篇> 获取子栏目的方法应该放在Entity层还是Service层?

获取子栏目的方法应该放在Entity层还是Service层?

来源:图灵教育
时间:2025-03-17 16:54:33

获取子栏目的方法应该放在entity层还是service层?

数据库实体与业务逻辑的分离:子栏获取方法的最佳位置

在项目开发中,代码结构和职责划分非常重要。本文讨论了一个常见的问题:获取子栏的方法应该放在实体类别中(Entity)还是服务类(Service)?

一些开发人员将这种方法放在Cat中.在java实体类中,代码如下:

package com.test.blog.pojo.po;

import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 栏目实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Cat extends Model<Cat> {
    @TableId(type = IdType.AUTO)
    private Integer catid;
    private String catname;
    private Integer pid;
    private String title;
    private String description;
    private Integer sortid;
    private Short pagesize;

    public List<Cat> getChildren() {
        QueryWrapper<Cat> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("pid", this.catid);
        List<Cat> list = this.selectList(queryWrapper); // 注意这里调用thiss.selectList
        return list;
    }
}

这两种方案各有优缺点:

方案1:Entity层(面向对象方法)

将方法放在Cat实体类中,符合面向对象的设计原则,使实体类更完整地表达自己的行为。 然而,这取决于实体类具有数据库访问能力,增加了实体类的耦合度。

方案二:Service层(面向接口方法)

将该方法放置在Service层中,遵循服务层处理业务逻辑的原则,保持实体类的纯数据模型。这更有利于代码维护和测试,避免了代码生成的自定义方法。 Service层可以依靠DAO层或Repository层进行数据库操作。

最终选择:

对于小项目或个人项目,Entity层的选择可能更简单。但对于团队项目,特别是代码生成工具(如MyBatiss)-Plus)强烈建议在Service层中放置获取子列的方法。这可以有效地避免代码覆盖问题,保持实体与业务逻辑的清晰分离,提高代码的可维护性和可扩展性。 Service层法可以清晰地表达业务意图,更容易进行单元测试。

以上是获取子栏目的方法,应该放在Entity层还是Service层?详情请关注图灵教育的其他相关文章!