编辑 | blame | 历史 | 原始文档

1. 数据库扩展 简介

dobbinfw已经集成mybatis-plus,其功能已经很强大,本不用扩展。为了方便使用,对数据库进行轻微扩展。

2. 功能

2.1. 查询dto

// 通过ID查询对象,并且携带子表数据
default <DTO> DTO selectByIdDto(Long id, Class<DTO> clazz)

使用方法:

1). 在属性上注解@ LeafTable,表示子表。Leaf是叶子子表,意思是,只会向下传递一层。

@Data
@ApiEntity(description = "采购退货单实体")
public class ErpPurchaseReturnDTO extends SuperDTO implements Serializable {
	...
        
    @ApiField(description = "商品列表")
    @LeafTable
    @NotNull(message = "商品列表不能为空")
    private List<ErpPurchaseReturnSkuDO> skuList;

}

2).子表上添加@ForeignKey注解,表示这是一个外键字段。

@Data
@TableName("unierp_erp_purchase_return_sku")
public class ErpPurchaseReturnSkuDO extends SuperDO implements Serializable {

    @ForeignKey
    private Long returnId;
	...

}

3).调用查询

public ErpPurchaseReturnDTO detail(Long returnId, Long adminId) throws ServiceException {
    return erpPurchaseReturnMapper.selectByIdDto(returnId, ErpPurchaseReturnDTO.class);
}

2.2. 插入dto

// 注解使用方式与上面一致
default Integer insertDto(Object dto)

2.3. 删除dto

// 注解使用方式与上面一致
default Integer deleteByIdDto(Serializable id, Class<?> clazz)

2.4. 自动建表

打开这个配置T/F (true/false ),在项目启动时会自动建表。这个比JPA的功能弱很多,因为没办法判断非空、长度之类的,注解也不要求提供。

com.dobbinsoft.fw.auto-build-table=T

自动建表手动调用IMapper下的:

Integer tableInit();

2.5. 一个SQL批量插入

这个仅支持MySQL,其他类型数据库请不要使用

Integer insertBatchSomeColumn(Collection<T> entityList);