增删查改接口

接口定义

DataAccess接口提供访问数据库的增删查改方法。

public interface DataAccess<E extends Persistable<I>, I extends Serializable, Q extends DoytoQuery> {
    List<E> query(Q query);
    long count(Q query);
    PageList<E> page(Q query);
    <V> List<V> queryColumns(Q q, Class<V> clazz, String... columns);
    List<I> queryIds(Q query);

    default E get(I id) {
        return get(IdWrapper.build(id));
    }
    E get(IdWrapper<I> w);

    default int delete(I id) {
        return delete(IdWrapper.build(id));
    }
    int delete(IdWrapper<I> w);
    int delete(Q query);

    void create(E e);
    default int batchInsert(Iterable<E> entities, String... columns) {
        int count = 0;
        for (E entity : entities) {
            create(entity);
            count++;
        }
        return count;
    }

    int update(E e);
    int patch(E e);
    int patch(E e, Q q);
}

DataAccess接口中的所有方法一共只接收4类参数:

  • id 实体的主键;

  • IdWrapper 分表主键对象,用于分表查询;

  • Entity 实体对象,用于映射表名和列名;

  • Query 查询对象,用于动态构造查询条件和分页语句,需要继承PageQuery

对于Entity的定义,请参考:

实体对象

对于Query的定义,请参考:

查询对象

示例

以下接口调用基于实体对象UserEntity和查询对象UserQuery进行演示:

Get

根据id查询数据:

Query

根据查询条件查询数据:

Count

根据查询条件查询数据的总数:

Page

根据查询条件查询数据和总数:

Delete

根据id删除数据:

DeleteByQuery

根据查询条件删除数据:

Create

创建单条数据:

CreateMulti

创建多条数据:

Update

根据id更新所有字段:

Patch

根据id更新所有非空字段:

PatchByQuery

根据查询条件更新所有非空字段:

最后更新于

这有帮助吗?