1、所有Dao标志接口
public interface DataAccessObject {}
2、所有实体标志父类
public class DominObject implements Serializable{}
3、DAO基础接口,包括增删改查等
public interface BaseDao<Entity, PK extends Serializable> extends
DataAccessObject {
/**
* 增加实体
*
* @param entity
* @return
*/
public Serializable save(Entity entity);
/**
* 更新实体
*/
public void update(Entity entity);
/**
* 根据ID判断保存或者更新
*
*/
public void saveOrUpdate(Entity entity);
/**
* 合并实体
*/
public void merge(Entity entity);
/**
* 更新实体
*/
public void refresh(Entity entity);
/**
* 删除实体
*
* @param entity
*/
public void delete(Entity entity);
/**
* 按ID删除对象
*
* @param id
*/
public void delete(final PK id);
/**
* 按ID查询对象
*
* @param id
* @return
*/
public Entity findById(final PK id);
/**
* 按ID查询多个对象
*
* @param ids
* @return
*/
public List<Entity> findByIds(final Collection<PK> ids);
/**
* 查询全部对象
*
* @return
*/
public List<Entity> getAll();
/**
* 获取全部对象, 支持按属性行序.
*/
public List<Entity> getAll(String orderByProperty, boolean isAsc);
/**
* 按属性查找对象列表, 匹配方式为相等.
*/
public List<Entity> findByProperty(final String propertyName,
final Object value);
/**
* 按属性查找唯一对象, 匹配方式为相等.
*/
public Entity findUniqueByProperty(final String propertyName,
final Object value);
/**
* 判断对象的属性值在数据库内是否唯一.
*
* 在修改对象的情景下,如果属性新修改的值(value)等于属性原来的值(orgValue)则不作比较.
*/
public boolean isPropertyUnique(final String propertyName,
final Object newValue, final Object oldValue);
/**
* 初始化对象. 使用load()方法得到的仅是对象Proxy, 在传到View层前需要进行初始化. 如果传入entity,
* 则只初始化entity的直接属性,但不会初始化延迟加载的关联集合和属性. 如需初始化关联属性,需执行:
* Hibernate.initialize(user.getRoles()),初始化User的直接属性和关联集合.
* Hibernate.initialize
* (user.getDescription()),初始化User的直接属性和延迟加载的Description属性.
*/
public void initProxyObject(Object proxy);
}
4、DAO分页查询,复杂条件查询接口
public interface BaseEntityDao<Entity,PK extends Serializable> extends BaseDao<Entity,PK>{
/**
* 分页获取全部对象.
*/
public Page<Entity> findAllByPage(final Page<Entity> page);
}
5、service基础接口,返回值封装类,主要针对提供webservice接口
public class RetdObj<RealObj> implements Serializable {
private static final long serialVersionUID = 132984918234911234L;
public static final int PASSCODE_MIN = 200;
public static final int PASSCODE_MAX = 299;
private RealObj realObj;
private RetdCodeType retdCodeType;
public RetdObj(){
this.setCode(RetdCodeType.NODEFINE);
}
public RetdObj(RealObj realObj) {
this.setCode(RetdCodeType.NODEFINE);
this.realObj = realObj;
}
/**
* service layer set retdCodeType
*
* @param retdCodeType
*/
public void setCode(RetdCodeType retdCodeType) {
this.retdCodeType = retdCodeType;
}
/**
* the page or action use this method
*
* @return
*/
public int getCode() {
return retdCodeType.getCode();
}
public void setRealObj(RealObj realObj) {
this.realObj = realObj;
}
/**
* the page or action use this method get the real object
* @return
*/
public RealObj getRealObj() {
int retdCode = retdCodeType.getCode();
if(retdCode>=PASSCODE_MIN&&retdCode<=PASSCODE_MAX)return realObj;
else return null;
}
}
6、状态码封装类
/**
*
*
* 0--未定义--初始化
* 200--成功
* 201--成功,但是realobj无内容
* 500--参数异常
* 501--应用异常
* 502--无权限
* 600--未知异常
*/
public enum RetdCodeType {
NODEFINE(0), PASS_OK(200), PASS_NODATA(201), EX_PARAM(500),EX_APP(501), EX_AUTH(502),EX_UNKNOWN(600);
private int code;
RetdCodeType(int code) {
this.code = code;
}
public int getCode() {
return this.code;
}
public static RetdCodeType valueOf(int code) {
switch(code) {
case 0 :
return NODEFINE;
case 200 :
return PASS_OK;
case 201 :
return PASS_NODATA;
case 500 :
return EX_PARAM;
case 501 :
return EX_APP;
case 502 :
return EX_AUTH;
case 600 :
return EX_UNKNOWN;
default :
return null;
}
}
}
7、service基础增删改查接口,针对webservice
public interface BaseService<Entity, PK extends Serializable> {
/**
* 增加实体
*
* @param entity
* @return
*/
public RetdObj<PK> save(Entity entity);
/**
* 更新实体
*/
public RetdObj<PK> update(Entity entity);
/**
* 合并实体
*/
public RetdObj<PK> merge(Entity entity);
/**
* 更新实体
*/
public RetdObj<PK> refresh(Entity entity);
/**
* 按ID删除对象
*
* @param id
*/
public RetdObj<PK> delete(final PK id);
/**
* 按ID查询对象
*
* @param id
* @return
*/
public RetdObj<Entity> findById(final PK id);
/**
* 按ID查询多个对象
*
* @param ids
* @return
*/
public RetdObj<List<Entity>> findByIds(final Collection<PK> ids);
/**
* 查询全部对象
*
* @return
*/
public RetdObj<List<Entity>> getAll();
/**
* 分页获取全部对象.
*/
public RetdObj<Page<Entity>> findAllByPage(final Page<Entity> page);
}
8、对mvc前台提供的service基础接口
public interface FrontBaseService<Entity, PK extends Serializable> {
/**
* 增加实体
*
* @param entity
* @return
*/
public PK save(Entity entity);
/**
* 更新实体
*/
public void update(Entity entity);
public void saveOrUpdate(Entity entity);
/**
* 合并实体
*/
public void merge(Entity entity);
/**
* 更新实体
*/
public void refresh(Entity entity);
/**
* 按ID删除对象
*
* @param id
*/
public void delete(final PK id);
/**
* 按ID查询对象
*
* @param id
* @return
*/
public Entity findById(final PK id);
/**
* 按ID查询多个对象
*
* @param ids
* @return
*/
public List<Entity> findByIds(final Collection<PK> ids);
/**
* 查询全部对象
*
* @return
*/
public List<Entity> getAll();
/**
* 分页获取全部对象.
*/
public Page<Entity> findAllByPage(final Page<Entity> page);
/**
* 批量删除
*/
public void delete(PK[] ids);
}