package message.mybatis.common.dao; import message.mybatis.common.provider.MapperProvider; import org.apache.ibatis.annotations.DeleteProvider; import org.apache.ibatis.annotations.InsertProvider; import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.UpdateProvider; import java.io.Serializable; /** * 基础dao,将常用的数据库CRUD方法放在这里,需要用到时,只需直接继承此接口就好了.<br/> * 其中的方法与{@code message.mybatis.common.dao.BaseRepository}一一对应<br/> * eg:<br/> * <pre> * @Repository * public interface DemoDAO extends BaseRepository<Demo> { * } * </pre> * * * @author sunhao(sunhao.java@gmail.com) * @version V1.0, 15/7/13 下午3:39 * @see message.mybatis.common.provider.MapperProvider */ public interface BaseRepository<T> { /** * 根据实体中的id属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号 * * @param id * @return */ @SelectProvider(type = MapperProvider.class, method = "dynamicSQL") T select(Serializable id); /** * 保存一个实体,null的属性不会保存,会使用数据库默认值。 * * @param t * @return */ @InsertProvider(type = MapperProvider.class, method = "dynamicSQL") int inert(T t); /** * 根据主键更新属性不为null的值。 * * @param entity * @return */ @UpdateProvider(type = MapperProvider.class, method = "dynamicSQL") int update(T entity); /** * 根据主键字段进行删除,方法参数必须包含完整的主键属性 * * @param id * @return */ @DeleteProvider(type = MapperProvider.class, method = "dynamicSQL") int delete(Serializable id); }