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);
}
分享到:
相关推荐
公共DAO层接口与实现 1、dao层接口 2、Hibernate实现 3、Spring JDBC的面向对象实现方式
SpringMVC+Mybatis整合及dao、service强封装:一、SPringMVC与Mybatis框架整合,其中SpringMVC主要采用注解方式实现,Mybatis采用xml为主,对数据库开发、测试、部署环境进行分离配置;二、在封装上针对Mybatis进行...
在反复的做项目的过程中,是不是每次都有大量的dao和service生成(vo的) 是不是总是要复制,粘贴.本人花了一天时间写了一个小小的工具.只需配合一下vo包名即可生成所有的vo 的dao 和service (当然,您的框架和我不一样只...
service接口 package com.erp.service; ... import ...这样只需要向dao中注入pojo的完整包名,你就能拥有一个pojo的dao,并且在你的service接口和实现类里不用写一句代码. 轻松持久化你的entity pojo
Java自动生成entity、dao、service、controller代码
一个增删改查的idea插件,可以根据数据库表结构,帮助您快速生成dao、service、controller等相关代码。同时支持MyBatis、JPA
dao,service 缓存设置,验证,代码
数据库表生成domain,dao,service,controller工具
怎样区分Action, Service 和 Dao功能.怎样区分Action, Service 和 Dao功能.
dao完成连接数据库修改删除...service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层。
ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现...
简单的JavaWeb入门小程序,使用MVC模式(DAO\Service\Servlet)实现对mysql数据库的增删查改操作
我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...
DAO抽象工厂
SSM框架下基本的mapper,dao,service,controller等相关文件的整理
java代码生成器(dao层service层)java代码生成器(dao层service层)
推荐个自动生成JAVA MVC多层代码的工具(dao,service,controller)(dao,service,controller) hibernate的hbm.xml ibatis的mapper.xml jsp文件都可以生成
NULL 博文链接:https://kaowww153.iteye.com/blog/859803
采用java语言开发,原生jdbc编程,dao层和service分离,数据库采用oracle,基于servlet,jsp