package com.hugnew.core.dao;
import com.github.abel533.mapper.MapperProvider;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
/**
* Created by Martin on 2016/7/01.
*/
public interface IBaseMapper<T> {
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
T selectOne(T record);
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
List<T> select(T record);
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
int selectCount(T record);
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
T selectByPrimaryKey(Object key);
@InsertProvider(type = MapperProvider.class, method = "dynamicSQL")
int insert(T record);
@InsertProvider(type = MapperProvider.class, method = "dynamicSQL")
int insertSelective(T record);
@DeleteProvider(type = MapperProvider.class, method = "dynamicSQL")
int delete(T record);
@DeleteProvider(type = MapperProvider.class, method = "dynamicSQL")
int deleteByPrimaryKey(Object key);
@UpdateProvider(type = MapperProvider.class, method = "dynamicSQL")
int updateByPrimaryKey(T record);
@UpdateProvider(type = MapperProvider.class, method = "dynamicSQL")
int updateByPrimaryKeySelective(T record);
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
int selectCountByExample(Object example);
@DeleteProvider(type = MapperProvider.class, method = "dynamicSQL")
int deleteByExample(Object example);
@SelectProvider(type = MapperProvider.class, method = "dynamicSQL")
List<T> selectByExample(Object example);
@UpdateProvider(type = MapperProvider.class, method = "dynamicSQL")
int updateByExampleSelective(@Param("record") T record, @Param("example") Object example);
@UpdateProvider(type = MapperProvider.class, method = "dynamicSQL")
int updateByExample(@Param("record") T record, @Param("example") Object example);
List<T> getAllByPage(RowBounds rowBounds);
}