All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.cliveyuan.robin.base.BaseMapper Maven / Gradle / Ivy

There is a newer version: 1.3.1
Show newest version
/*
 * Copyright (c) 2020  Clive Yuan ([email protected]).
 */

package cn.cliveyuan.robin.base;

import cn.cliveyuan.robin.base.condition.Example;
import cn.cliveyuan.robin.base.provider.SqlProvider;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;

import java.util.List;

/**
 * 基础 Mapper
 *
 * @author Clive Yuan
 * @date 2020/10/28
 */
public interface BaseMapper {

    boolean USE_GENERATED_KEYS = true;
    String KEY_PROPERTY = "id";

    /**
     * 选择性插入
     * 

* 仅插入非null字段 * * @param entity 实体 * @return 影响行数 */ @InsertProvider(SqlProvider.class) @Options(useGeneratedKeys = USE_GENERATED_KEYS, keyProperty = KEY_PROPERTY) int insert(T entity); /** * 全字段插入 *

* 无论是否为null均进行插入 * * @param entity 实体 * @return 影响行数 */ @InsertProvider(SqlProvider.class) @Options(useGeneratedKeys = USE_GENERATED_KEYS, keyProperty = KEY_PROPERTY) int insertAll(T entity); /** * 选择性插入且忽略错误 *

* 仅插入非null字段 * * @param entity 实体 * @return */ @InsertProvider(SqlProvider.class) @Options(useGeneratedKeys = USE_GENERATED_KEYS, keyProperty = KEY_PROPERTY) int insertIgnore(T entity); /** * 批量选择性插入 * * @param list 实体列表 * @return 影响行数 */ @InsertProvider(SqlProvider.class) @Options(useGeneratedKeys = USE_GENERATED_KEYS, keyProperty = KEY_PROPERTY) int batchInsert(@Param("list") List list); /** * 批量选择性插入且忽略错误 * * @param list 实体列表 * @return */ @InsertProvider(SqlProvider.class) @Options(useGeneratedKeys = USE_GENERATED_KEYS, keyProperty = KEY_PROPERTY) int batchInsertIgnore(@Param("list") List list); /** * 根据ID删除 * * @param id 主键ID * @return 影响行数 */ @DeleteProvider(SqlProvider.class) int delete(@Param("id") Long id); /** * 批量ID删除 * * @param ids ID列表 * @return 影响行数 */ @DeleteProvider(SqlProvider.class) int batchDelete(@Param("ids") List ids); /** * 根据条件删除 * * @param example 条件构造器 * @return 影响行数 */ @DeleteProvider(SqlProvider.class) int deleteByExample(@Param("example") Example example); /** * 选择性更新 *

* 仅更新非null字段 * * @param entity 实体 * @return 影响行数 */ @UpdateProvider(SqlProvider.class) int update(@Param("entity") T entity); /** * 全字段更新 *

* 无论是否为null均进行更新 * * @param entity 实体 * @return 影响行数 */ @UpdateProvider(SqlProvider.class) int updateAll(@Param("entity") T entity); /** * 根据条件选择性更新 * * @param entity 实体 * @param example 条件构造器 * @return 影响行数 */ @UpdateProvider(SqlProvider.class) int updateByExample(@Param("entity") T entity, @Param("example") Example example); /** * 根据条件更新全字段 * * @param entity 实体 * @param example 条件构造器 * @return 影响行数 */ @UpdateProvider(SqlProvider.class) int updateByExampleAll(@Param("entity") T entity, @Param("example") Example example); /** * 根据ID获取实体 * * @param id 主键ID * @return 实体对象 */ @SelectProvider(SqlProvider.class) T get(@Param("id") Long id); /** * 批量获取实体 * * @param ids ID列表 * @return 实体列表 */ @SelectProvider(SqlProvider.class) List batchGet(@Param("ids") List ids); /** * 根据条件获取实体 *

* 多个时仅返回ID倒序排序首个 * * @param example 条件构造器 * @return 实体对象 */ @SelectProvider(SqlProvider.class) T getByExample(@Param("example") Example example); /** * 根据条件列表查询 * * @param example 条件构造器 * @return 实体列表 */ @SelectProvider(SqlProvider.class) List list(@Param("example") Example example); /** * 根据条件数量查询 * * @param example 条件构造器 * @return 数量 */ @SelectProvider(SqlProvider.class) int count(@Param("example") Example example); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy