JSP,SSH框架学习日志3,DAO层_第1页
JSP,SSH框架学习日志3,DAO层_第2页
JSP,SSH框架学习日志3,DAO层_第3页
JSP,SSH框架学习日志3,DAO层_第4页
JSP,SSH框架学习日志3,DAO层_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JSP,SSH框架学习日志3,DAO层model层完成之后应该写DAO层了,DAO层的主要功能就是对数据的操作。其实DAO层也可以由Hibernate的反向工程生成,不过生成的方法不够完善,我们需要自己再添加进去。不过这样每一张表都要写重复一样的话很麻烦。我是不会告诉你我以前是用反向工程一个一个生成,然后把要添加的方法写一遍用复制粘贴然后再去一个一个改的。上课的时候赖老师教给我一个简单的方法继承。好吧,继承这个我也会用,不过有个问题就是Hibernate的操作是对Model的对象进行操作的,而不是直接对数据库进行操作,如果写一个公用类来继承的话,但是每个表的操作类的类型是不一样的,我们定义他传

2、进来的参数类型总不能有几张表就写几次吧所以说老师是万能的,他又给了我一个方法详情请看/wiki/GenericDataAccessObjectsDAO需要一个接口和一个接口的实现类。因为Spring注入的时候只能用接口注入。我给DAO层写一个公用类和接口放在了公用层里,名字分别为CommonDAO和ICommonDAO。以下是ICommonDAO的代码package com.ksxt.sys;import java.io.Serializable;import java.util.List;public interface ICommonDA

3、O<T,ID extends Serializable>     public void save(T transientInstance) throws Exception;       public void delete(T persistentInstance) throws Exception;       public  void update(T instance) th

4、rows Exception;       public int updateByQuery(String hql);       public T findById(ID id);       public List<T> findByqQuery(String hql);       public Li

5、st<T> findAll();       public  List<T> queryForPage(String hql, int offset,int length);以下是CommonDAO的代码package com.ksxt.sys;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import org.hibernate.Criter

6、ia;import org.hibernate.SessionFactory;import org.hibernate.criterion.Criterion;public abstract class CommonDAO<T,ID extends Serializable> implements ICommonDAO<T, ID>     private SessionFactory sessionFactory;/加载数据库连接(使用spring实现加载)    private Clas

7、s<T> persistentClass;       /sessionFactory的get和set方法。    public SessionFactory getSessionFactory()         return sessionFactory;        public void setSessio

8、nFactory(SessionFactory sessionFactory)         this.sessionFactory = sessionFactory;           /用构造方法处理Class<T>以下为固定模式    public CommonDAO()      &#

9、160;     this.persistentClass = (Class<T>) (ParameterizedType) getClass()                .getGenericSuperclass().getActualTypeArguments()0;        &#

10、160;  public Class<T> getPersistentClass()         return persistentClass;           /对表的操作(增删改查)    /保存    public void save(T transientInstance) thr

11、ows Exception            try             sessionFactory.getCurrentSession().save(transientInstance);         catch (RuntimeException e) 

12、0;           throw e;                   /删除    public void delete(T persistentInstance) throws Exception    &#

13、160;       try             sessionFactory.getCurrentSession().delete(persistentInstance);         catch (RuntimeException e)       

14、0;     throw e;                      /更新    public void update(T instance) throws Exception         

15、   try             sessionFactory.getCurrentSession().saveOrUpdate(instance);         catch (RuntimeException e)             

16、/ TODO: handle exception            throw e;                      /根据传进来的HQL语句更新,返回受影响行数    public int updateB

17、yQuery(String hql)            int k=0;        try             k=sessionFactory.getCurrentSession().createQuery(hql).executeUpdate(); &#

18、160;       catch (RuntimeException e)             / TODO: handle exception            throw e;         &#

19、160;      return k;           /根据传进来的ID进行查询    public T findById(ID id)                   try  

20、           T instance = (T) sessionFactory.getCurrentSession().get(getPersistentClass(), id);            return instance;         catch (RuntimeE

21、xception e)             / TODO: handle exception            throw e;                  

22、0;/根据传进来的hql查询    public List<T> findByqQuery(String hql)            try             return sessionFactory.getCurrentSession().createQuery(hql).list();

23、60;        catch (RuntimeException e)             / TODO: handle exception            throw e;        

24、60;          /查找所有表里的所有内容    public List<T> findAll()            try             return findByCriteria()

25、;/调用下面的findByCriteria方法         catch (RuntimeException e)             / TODO: handle exception            throw e;    &

26、#160;              /查找表里的所有内容并返回    protected List<T> findByCriteria(Criterion. criterion)         Criteria crit = sessionFactory.getCurrentSession().createCriteria

27、(                getPersistentClass();        for (Criterion c : criterion)             crit.add(c);   &#

28、160;            return crit.list();           /jQuery Easyui Datagrid需要的方法,根据传进来的hql,当前页数,页面长度返回数据列    public List<T> queryForPage(String hql, int offset, int

29、length)         try            List<T> results=sessionFactory.getCurrentSession().createQuery(hql)                

30、    .setFirstResult(offset)                    .setMaxResults(length)                  

31、60; .list();            return results;        catch (RuntimeException re)             throw re;               这里面的方法还不是很完全,可根据需要自行添加或删除。公用的类和接口写完了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论