java基础Dao以及基础Service的简易方式实现
来源:互联网 发布:java自学看什么app好些 编辑:程序博客网 时间:2024/05/05 19:47
Dao接口
public interface BaseDao<T> {//新增public void save(T entity);//更新public void update(T entity);//删除public void delete(Serializable id);//根据id查询public T findObjectById(Serializable id);//查询列表public List<T> findObjects();}
Dao实现
public abstract class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {Class<T> clazz;/** * 获取真实的泛型类型 */public BaseDaoImpl(){// 获取当前new的对象的 泛型的父类 类型ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();//BaseDaoImpl<User>clazz = (Class<T>)pt.getActualTypeArguments()[0];// 获取第一个类型参数的真实类型}@Overridepublic void save(T entity) {getHibernateTemplate().save(entity);}@Overridepublic void update(T entity) {getHibernateTemplate().update(entity);}@Overridepublic void delete(Serializable id) {getHibernateTemplate().delete(findObjectById(id));}@Overridepublic T findObjectById(Serializable id) {return getHibernateTemplate().get(clazz, id);}@Overridepublic List<T> findObjects() {return getCurrentSession().createQuery("FROM " + clazz.getSimpleName()).list();}@Overridepublic List<T> findObjects(String hql, List<Object> parameters) {Query query = getCurrentSession().createQuery(hql);if(parameters != null){for(int i = 0; i < parameters.size(); i++){query.setParameter(i, parameters.get(i));}}return query.list();}}基础Dao的采用的是java的反射技术,在基础Dao中获取子类真实的泛型父类,从而达到通用的目的。
基础Service接口
public abstract class BaseServiceImpl<T> implements BaseService<T> {private BaseDao<T> baseDao;public void setBaseDao(BaseDao<T> baseDao) {this.baseDao = baseDao;}@Overridepublic void save(T entity) {baseDao.save(entity);}@Overridepublic void update(T entity) {baseDao.update(entity);}@Overridepublic void delete(Serializable id) {baseDao.delete(id);}@Overridepublic T findObjectById(Serializable id) {return baseDao.findObjectById(id);}@Overridepublic List<T> findObjects() {return baseDao.findObjects();}}
基础Service简易实现方式
@Service("userService")public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {private UserDao userDao;@Resourcepublic void setUserDao(UserDao userDao) {super.setBaseDao(userDao);this.userDao = userDao;}}使用set方法注入UserDao时,也将子类的Dao实现类对象传递给了BaseDao。
0 0
- java基础Dao以及基础Service的简易方式实现
- Java Web基础 Action+Service +Dao三层的功能划分
- DAO基础功能实现
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Java Web基础——Action+Service +Dao三层的功能划分
- Android中的Handler
- 轻松学习JavaScript十六:JavaScript的BOM学习(一)
- mysql 创建删除数据库(linux)
- Android 在eclipse 创建selectors(随记三)
- 设计模式之策略模式
- java基础Dao以及基础Service的简易方式实现
- Android之线程使用AsyncTask异步任务(二)
- iOS 单例模式
- php获取textarea的值并处理回车换行的方法
- 【LeetCode】7 Reverse Integer
- 基于vs2008的OpenCV2.3.1配置及SIFT算法实现
- 自己总结的一些C语言库函数
- Function
- iOS 应用程序的发布(和测试)证书 ,描述证书 的生成和 上线流程