SSH中公共Dao层、Dao接口
来源:互联网 发布:java socket 聊天室 编辑:程序博客网 时间:2024/05/29 03:07
早做项目时候!为了优化代码可以创建公共类与接口 先写一个Dao层的公共接口,在里面实现增删改查等各种功能 public interface IBaseDao<T> { //增加 public void save(T entity);
//删除
public void delete(Long id);
//修改
public void update(T entity);
//根据id查询
public T getById(Long id);
//根据多个id查询
public List<T> getByIds(Long[] ids);
//查询全部
public List<T> getAll();
} 给一个泛型,因为这个接口要背以后写的Dao层接口继承,会有一个Class类 创建一个实现类,实现这个公共接口 @SuppressWarnings("unchecked") public class BaseDaoImpl<T> implements IBaseDao<T>{
@Autowired //注入SessionFactory
private SessionFactory sessionFactory;
//继承BaseDaoImpl的类的Class类
private Class<T> clazz;
public BaseDaoImpl(){
//返回表示此Class所表示的实体(类、接口、基本类型或void)的直接超类的type
//实际上就是父类的Class类
ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
//返回表示此类型实际类型参数的type对象的数组
//实际上获得的是父类的泛型类型
Type[] type = genericSuperclass.getActualTypeArguments();
clazz = (Class<T>) type[0];
}
//获得session
public Session getSession(){
return sessionFactory.getCurrentSession();
}
public void save(T entity) {
// TODO Auto-generated method stub
getSession().save(entity);
}
public void delete(Long id) {
// TODO Auto-generated method stub
getSession().delete(getSession().get(clazz, id));
}
public void update(T entity) {
// TODO Auto-generated method stub
getSession().update(entity);
}
public T getById(Long id) {
// TODO Auto-generated method stub
return (T) getSession().get(clazz, id);
}
public List<T> getByIds(Long[] ids) {
// TODO Auto-generated method stub
String hql = "from "+clazz.getSimpleName()+" where id in (:ids)";
Query query = getSession().createQuery(hql);
query.setParameterList("ids", ids);
return query.list();
}
public List<T> getAll() {
// TODO Auto-generated method stub
String nameClass = clazz.getSimpleName();//获得泛型的名称
String sql = "from "+nameClass;
return getSession().createQuery(sql).list();
}
} //创建方法获取到泛型的type和获得到Session对象
//删除
public void delete(Long id);
//修改
public void update(T entity);
//根据id查询
public T getById(Long id);
//根据多个id查询
public List<T> getByIds(Long[] ids);
//查询全部
public List<T> getAll();
} 给一个泛型,因为这个接口要背以后写的Dao层接口继承,会有一个Class类 创建一个实现类,实现这个公共接口 @SuppressWarnings("unchecked") public class BaseDaoImpl<T> implements IBaseDao<T>{
@Autowired //注入SessionFactory
private SessionFactory sessionFactory;
//继承BaseDaoImpl的类的Class类
private Class<T> clazz;
public BaseDaoImpl(){
//返回表示此Class所表示的实体(类、接口、基本类型或void)的直接超类的type
//实际上就是父类的Class类
ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
//返回表示此类型实际类型参数的type对象的数组
//实际上获得的是父类的泛型类型
Type[] type = genericSuperclass.getActualTypeArguments();
clazz = (Class<T>) type[0];
}
//获得session
public Session getSession(){
return sessionFactory.getCurrentSession();
}
public void save(T entity) {
// TODO Auto-generated method stub
getSession().save(entity);
}
public void delete(Long id) {
// TODO Auto-generated method stub
getSession().delete(getSession().get(clazz, id));
}
public void update(T entity) {
// TODO Auto-generated method stub
getSession().update(entity);
}
public T getById(Long id) {
// TODO Auto-generated method stub
return (T) getSession().get(clazz, id);
}
public List<T> getByIds(Long[] ids) {
// TODO Auto-generated method stub
String hql = "from "+clazz.getSimpleName()+" where id in (:ids)";
Query query = getSession().createQuery(hql);
query.setParameterList("ids", ids);
return query.list();
}
public List<T> getAll() {
// TODO Auto-generated method stub
String nameClass = clazz.getSimpleName();//获得泛型的名称
String sql = "from "+nameClass;
return getSession().createQuery(sql).list();
}
} //创建方法获取到泛型的type和获得到Session对象
阅读全文
0 0
- SSH中公共Dao层、Dao接口
- SSH中DAO层抽取
- 解决SSh中公共Dao使用泛型且Dao层无其他Dao,Service直接继承公共Dao,部署到tomcat可能会出现的错误。
- dao接口公共类
- dao接口公共类
- dao接口实现公共类
- ssh 下dao 层测试
- SSH的Dao层封装
- SSH框架之dao层
- JDBC中Dao层
- Hibernate-DAO层接口理解
- DAO中接口作用
- 泛型,反射,公共dao层的使用
- dao层抽取公共的方法
- JAVA SSH开发架构中Action层,Service层,modle层,Dao层的功能区分
- SSH框架中Model层, Action层, Service层, Dao层的功能理解
- 关于SSH的Service层和Dao层的接口的讨论
- Dao层
- 【Flashback】Flashback Database闪回数据库功能实践
- TensorFlow MNIST的CNN实现——源码和运行结果
- 2017年11月23日训练总结
- 浅谈多线程在java程序中的应用
- 求nextval数组值的简便算法
- SSH中公共Dao层、Dao接口
- Online Judge判题结果解析
- 太空飞行计划问题
- JVM调优
- 无缝滚动
- c# linq的差集,并集,交集,去重
- python的冒泡排序
- IntelliJ IDEA 安装总结
- SSH中Action