在项目开发中,代码结构和职责划分非常重要。本文讨论了一个常见的问题:获取子栏的方法应该放在实体类别中(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层?详情请关注图灵教育的其他相关文章!
