简化开发-base类(泛型)
来源:互联网 发布:淘宝首页添加链接代码 编辑:程序博客网 时间:2024/04/30 04:04
简化开发-base类(泛型)
本文章主要讲了两个技巧,一是在Dao层中基本操作的复用,和Spring配置中的一些代码复用。
简明的说一下类的作用:
BaseDao(接口类):
实体中共有的增删改查操作的接口
BaseHibernateDao(实现类):继承HibernateDaoSupport,实现BaseDao接口
实现BaseDao类中的基本操作。
UserDao(接口类):继承BaseDao类
实体中除了基本操作的额外操作,用于扩充功能。
UserHibernateDao(实现类):继承BaseHibernateDao类,实现UserDao接口
实现UserDao类的操作。
从上面的分析可以看出来,UserDao类是包含有全部的底层操作的接口,而UserHibernateDao类是实现了UserDao
类的全部操作。实现了base类后,实际上是简化了实体通用的操作,只写一次就行了。。
在ssh2 结构中,可以利用spring 对UserService 类进行注入UserDao类即可。如Spring的配置文件:
<bean id="daoTemplate" abstract="true">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="userDao" class="dao.hibernate.UserHibernateDao" parent="daoTemplate"/>
<bean id="userService" class="service.imp.UserService">
<property name="userDao" ref="userDao"/>
<bean id="***Dao" class="dao.hibernate.***HibernateDao" parent="daoTemplate"/>
<bean id="***Service" class="service.imp.UserService">
<property name="***Dao" ref="***Dao"/>
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="userDao" class="dao.hibernate.UserHibernateDao" parent="daoTemplate"/>
<bean id="userService" class="service.imp.UserService">
<property name="userDao" ref="userDao"/>
<bean id="***Dao" class="dao.hibernate.***HibernateDao" parent="daoTemplate"/>
<bean id="***Service" class="service.imp.UserService">
<property name="***Dao" ref="***Dao"/>
从这个配置文件上又有个 daoTemplate 的bean ,这个bean 是一个抽象类,注入了sessionFactory,如果其他bean类继承它的话,就可以不用在为它注入sessionFactory了,,这个也是一个技巧,有点像Base类,功能都是实现代码的复用。。。
下面是上面一些类的演示代码:
BaseDao
import java.io.Serializable;
import java.util.List;
public interface BaseDao<T,ID extends Serializable> {
public void save(T entity);
public void delete(T entity);
public void deleteById(Class<T> entityClass,ID id);
public void update(T entity);
public T findById(Class<T> entityClass,ID id);
public List<T> findAll(Class<T> entityClass);
}
import java.util.List;
public interface BaseDao<T,ID extends Serializable> {
public void save(T entity);
public void delete(T entity);
public void deleteById(Class<T> entityClass,ID id);
public void update(T entity);
public T findById(Class<T> entityClass,ID id);
public List<T> findAll(Class<T> entityClass);
}
BaseHibernateDao
package dao.base;
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseHibernateDao<T,ID extends Serializable> extends HibernateDaoSupport implements BaseDao<T,ID> {
@Override
public void delete(T entity) {
this.getHibernateTemplate().delete(entity);
}
@Override
public void deleteById(Class<T> entityClass, ID id) {
delete(this.findById(entityClass, id));
}
@Override
public T findById(Class<T> entityClass, ID id) {
return (T)this.getHibernateTemplate().get(entityClass, id);
}
@Override
public List<T> findAll(Class<T> entityClass) {
String name=entityClass.getName();
return this.getHibernateTemplate().find("from"+name);
}
@Override
public void save(T entity) {
this.getHibernateTemplate().save(entity);
}
@Override
public void update(T entity) {
this.getHibernateTemplate().update(entity);
}
}
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseHibernateDao<T,ID extends Serializable> extends HibernateDaoSupport implements BaseDao<T,ID> {
@Override
public void delete(T entity) {
this.getHibernateTemplate().delete(entity);
}
@Override
public void deleteById(Class<T> entityClass, ID id) {
delete(this.findById(entityClass, id));
}
@Override
public T findById(Class<T> entityClass, ID id) {
return (T)this.getHibernateTemplate().get(entityClass, id);
}
@Override
public List<T> findAll(Class<T> entityClass) {
String name=entityClass.getName();
return this.getHibernateTemplate().find("from"+name);
}
@Override
public void save(T entity) {
this.getHibernateTemplate().save(entity);
}
@Override
public void update(T entity) {
this.getHibernateTemplate().update(entity);
}
}
UserDao
package dao;
import dao.base.BaseDao;
import model.User;
public interface UserDao extends BaseDao<User,Integer>{
User findUserByNameAndPass(String name,String password);
}
import dao.base.BaseDao;
import model.User;
public interface UserDao extends BaseDao<User,Integer>{
User findUserByNameAndPass(String name,String password);
}
UserHibernateDao
package dao.hibernate;
import java.util.List;
import model.User;
import dao.UserDao;
import dao.base.BaseHibernateDao;
public class UserHibernateDao extends BaseHibernateDao<User,Integer> implements UserDao {
@Override
public User findUserByNameAndPass(String name, String password) {
// TODO Auto-generated method stub
List<User> us=this.getHibernateTemplate().find("from User user where name=? and password=?",new Object[]{name,password});
if(us.size()==1)
return us.get(0);
else
return null;
}
}
import java.util.List;
import model.User;
import dao.UserDao;
import dao.base.BaseHibernateDao;
public class UserHibernateDao extends BaseHibernateDao<User,Integer> implements UserDao {
@Override
public User findUserByNameAndPass(String name, String password) {
// TODO Auto-generated method stub
List<User> us=this.getHibernateTemplate().find("from User user where name=? and password=?",new Object[]{name,password});
if(us.size()==1)
return us.get(0);
else
return null;
}
}
- 简化开发-base类(泛型)
- 简化开发-base类(泛型)
- Java Generics(泛型)简化DAO开发一例
- 使用 jQuery 简化 Ajax 开发(转载)
- xUtils使用(简化开发,必备)
- Base类
- Base类
- J2EE简化应用开发
- XDoclet简化Struts开发
- 简化开发,易化MDA
- 新标准简化SOA开发
- StrutsTestCase 简化开发过程
- StrutsTestCase 简化开发过程
- PB7简化Web开发
- NSOperationQueue 简化多线程开发
- 简化 Mybatis 开发
- MyBatis优化简化开发
- 简化java开发
- vim 如何在不同编辑器(VIM~gedit~firefox~etc.)之间复制粘贴
- Android ListView从网络获取图片及文字显示
- deep learning and some relate topic
- android ListView根据字母排序和定位
- 网络编程 套接字类CAsyncSocket的用法
- 简化开发-base类(泛型)
- WATCH YOUR NOVA LOG AT THE SAME TIME
- 【又是忠告】一位年轻女董事长的37条忠告
- poj 1840 (数学)
- 关于HttpClient的总结
- 高质量编程之表达式和基本语句
- 专访邓凡平:Android开发路上的快速学习之道
- 投文章模板
- node.js npm ffi Could not locate the bindings file