package com.yanzuoguang.dao; import com.yanzuoguang.util.vo.DataDaoVo; import com.yanzuoguang.util.vo.PageSizeData; import com.yanzuoguang.util.vo.PageSizeReqVo; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /** * 数据基本操作接口 * * @author 颜佐光 */ public interface BaseDao { /** * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。 * * @param model 需要创建的数据 * @return 创建的主键编号 */ String create(Object model); /** * 主键存在则更新,否则替换 * * @param model * @return */ String replace(Object model); /** * 修改数据 * * @param model 需要修改的数据 * @return 删除的主键编号 */ String update(Object model); /** * 保存数据,有主键时修改,无主键时创建 * * @param model 需要保存的数据 * @return 保存的主键编号 */ String save(Object model); /** * 删除数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.remove({orderId:1}); * int field; * * @param model 需要删除的数据,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @return 删除的记录数量 */ int remove(Object model); /** * 加载数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.load({orderId:1}); * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ T load(Object model, Class resultClass); /** * 加载数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.load({orderId:1}); * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ T load(Object model, Class resultClass, boolean fullCond); /** * 加载列表数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.loadList({orderId:1}); * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadList(Object model, Class resultClass); /** * 加载列表数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.loadList({orderId:1}); * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadList(Object model, Class resultClass, boolean fullCond); /** * 加载分页数据 * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ PageSizeData loadPage(PageSizeReqVo model, Class resultClass); /** * 加载分页数据 * * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ PageSizeData loadPage(PageSizeReqVo model, Class resultClass, boolean fullCond); /** * 加载分页数据 * * @param pageReq 分页数据信息 * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ PageSizeData loadPage(PageSizeReqVo pageReq, Object model, Class resultClass); /** * 加载分页数据 * * @param pageReq 分页数据信息 * @param model 加载数据的请求参数,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ PageSizeData loadPage(PageSizeReqVo pageReq, Object model, Class resultClass, boolean fullCond); /** * 加载分页数据 * * @param model 加载数据的请求参数 * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadPageData(PageSizeReqVo model, Class resultClass); /** * 加载分页数据 * * @param model 加载数据的请求参数 * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadPageData(PageSizeReqVo model, Class resultClass, boolean fullCond); /** * 加载分页数据 * * @param model 加载数据的请求参数 * @param resultClass 需要加载的数据的类型 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadPageData(PageSizeReqVo pageReq, Object model, Class resultClass); /** * 加载分页数据 * * @param model 加载数据的请求参数 * @param resultClass 需要加载的数据的类型 * @param fullCond 所有条件生效 * @param 返回数据的类型 * @return 需要返回的数据 */ List loadPageData(PageSizeReqVo pageReq, Object model, Class resultClass, boolean fullCond); /** * 修改数据 * * @param model 需要修改的数据 * @return 删除的主键编号 */ List updateList(Collection model); /** * 修改数据 * * @param model 需要修改的数据 * @return 删除的主键编号 */ List updateArray(Object... model); /** * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。 * * @param model 需要创建的数据 * @return 创建的主键编号 */ List createList(Collection model); /** * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。 * * @param model 需要创建的数据 * @return 创建的主键编号 */ List createArray(Object... model); /** * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。 * * @param model 需要创建的数据 * @return 创建的主键编号 */ List replaceList(Collection model); /** * 创建数据,当不传入了主键时,则会自动生成主键,传入时不会生成。 * * @param model 需要创建的数据 * @return 创建的主键编号 */ List replaceArray(Object... model); /** * 保存数据,有主键时修改,无主键时创建 * * @param model 需要保存的数据 * @return 保存的主键编号 */ List saveList(Collection model); /** * 保存数据,有主键时修改,无主键时创建 * * @param model 需要保存的数据 * @return 保存的主键编号 */ List saveArray(Object... model); /** * 删除数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.remove({orderId:1}); * int field; * * @param model 需要删除的数据,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @return 删除的记录数量 */ int removeList(Collection model); /** * 删除数据,可以用于父子表删除,如通过订单删除游客信息 visitorDao.remove({orderId:1}); * int field; * * @param model 需要删除的数据,可以是主键字符串(Int),或者是包含主键的实体,或者是包含其他非主键的实体完全匹配. * @return 删除的记录数量 */ int removeArray(Object... model); /*** * 查询数据是否存在,当存在时修改,否则增加 * @param cls 需要创建的实体的类型 * @param requests 前台参数,不能包含主键以及其他不需要修改的字段 * @return 保存成功,返回保存的ID,保存失败,返回空值 */ List saveByLoadArray(Class cls, Object... requests); /*** * 查询数据是否存在,当存在时修改,否则增加 * @param cls 需要创建的实体的类型 * @param requests 前台参数,不能包含主键以及其他不需要修改的字段 * @return 保存成功,返回保存的ID,保存失败,返回空值 */ List saveByLoadList(Class cls, List requests); /*** * 查询数据是否存在,当存在时修改,否则增加 * @param cls 需要创建的实体的类型 * @param request 前台参数,不能包含主键以及其他不需要修改的字段 * @return 保存成功,返回保存的ID,保存失败,返回空值 */ String saveByLoad(Class cls, Object request); /** * 添加统计数据 * * @param cls 类型 * @param model 实体 * @param 泛型类型 * @return 增加统计的数据编号 */ String addGroup(Class cls, T model); /** * 添加统计数组 * * @param cls 类型 * @param models 请求实体 * @param 泛型数据 * @return 返回列表 */ List addGroupList(Class cls, List models); /** * 添加统计数组 * * @param cls 类型 * @param models 请求实体 * @param 泛型数据 * @return 返回列表 */ List addGroupArray(Class cls, T... models); /** * 对数据据进行集合操作 * * @param daoVo * @return */ List dataDao(DataDaoVo daoVo); }