大佬们,我想写个获取子栏目的方法,这个写在entity(po)里合适吗?还是写到service里或其他什么地方?
目前写在了实体类里(entity?po?domain?)
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 = selectList(queryWrapper);
return list;
}
}
两种写法都可以,取决于项目设计。
从面向对象的角度出发,写在Entity中是对的。毕竟Java是面向对象的语言 :)
但是就常见的项目实践来说,一般是写在Service层。说到底现在的项目还是面向接口编程居多,而且考虑到MyBatis-Plus在项目中的应用,很多项目会使用覆盖式策略自动生成Entity层的实体类对象代码,如果把getChilgren方法写在Entity层,一但数据库调整导致刷新Entity层代码,很可能导致这些自定义的方法被覆盖删除,导致项目报错。
综上,如果是面向对象的实践项目或者自己用的小项目,自己喜欢就好,写在Entity会更符合语义。如果是团队项目,建议配合团队项目规范,通常是后者。