MybatisPlus-AR模式与公共类同时实现

前言

Active Record(活动记录),简称AR,是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。ActiveRecord 严格遵循标准的 ORM 模型:表映射到实体对象,列映射到实体对象属性。

应用到实际即可以通过实体类对象对数据库进行增删改查操作,在service中操作其他表的数据的时候,不需要再注入其他表的mapper了,直接new一个对象,进行操作即可

使用AR模式之前:

@Autowired
private FinanceOrderLogMapper financeOrderLogMapper;

private void test(){
    FinanceOrderLog financeOrderLog = financeOrderLogMapper.selectById(1);
}

使用AR模式之前:

private void test(){
    FinanceOrderLog financeOrderLog = new FinanceOrderLog();
    financeOrderLog.selectById(1);
}
// 或者
private void test(){
    FinanceOrderLog financeOrderLog = new FinanceOrderLog();
    financeOrderLog.setId(1);
    financeOrderLog.selectById();
}

具体实现

在实体类上继承Model类即可

@Data
@TableName("area")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "区域表")
public class Area extends Model<Area> {
    
	private static final long serialVersionUID = 1L;

	/**
	 * 主键id
	 */
	@TableId(type = IdType.AUTO)
	@ApiModelProperty(value = "主键id")
	private Integer id;
}

注意:Model的泛型需要指定,而且泛型的类需要有与之对应的mapper

同时该模式只支持model内定义的方法,如果是在mapper.xml中自定义的sql语句,还是需要通过mapper来调用,model不能调用自定义sql语句

AR模式使用公共字段

如果使用公共字段的话,所有实体类都需要继承一个公共的类,将id、create_time等字段抽取为公共字段

而使用AR模式的话,需要继承Model类

众所周知,java是不支持多继承的,那如何能够实现同时使用AR模式,又能够继承公共的类呢

我们可以让公共的类去继承Model类,然后为公共od增加泛型,实体类再继承公共类,这样就可以实现既使用AR模式又使用公共类了

公共类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseEntity<T extends Model<?>> extends Model<T> implements Serializable {

    /**
     * 主键id
     */
    @NotNull
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    private Integer id;
    
    // ...其他字段
}

实体类:

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("business_article")
@ApiModel(value = "业务表-文章主体表")
public class BusinessArticle extends BaseEntity<BusinessArticle> {

    private static final long serialVersionUID = 1L;

    /**
     * 文章url
     */
    @ApiModelProperty(value="文章url")
    private String url;
    
    // ...其他字段
}

总结

AR模式可以减少其他mapper的注入,能够提升代码简洁度


👍 欢迎前往博客主页查看更多内容

👍 如果觉得不错,期待您的点赞、收藏、评论、关注

👍 ​ 如有错误欢迎指正!

👍 ​ 源码地址:https://gitee.com/ralphchen/ralph-cloud

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值