Hibernate和Spring对DAO处理的实例 (!!!)

Struts+Spring+Hibernate的完美融合(实例+图片+分析) 题目:Struts+Spring+Hibernate的完美融合 第一篇 struts与spring的融合第一步:配置环境与技术支持1、环境:tomcat5.0 + eclipse3.2.2 + myEclipse5.5 + jdk1.52、技术:struts1.1+spring2.0分析:经过多次实验,(初建struts+spring)项目中出现的问题和工具及技术版本没 阅读详情
引用"Spring"手册上的话说: Hibernate+Spring显然是天生的结合.

下面是我用spring处理的一个HibernateDAO实例,可以看到,代码量大大减少了.

java代码: 

 1   
 2   package infoweb.dao;
 3   
 4   import java.util.List;
 5   import java.util.Iterator;
 6   
 7   import infoweb.pojo.Info;
 8   
 9   
 10  import net.sf.hibernate.HibernateException;
 11  import net.sf.hibernate.Query;
 12  import net.sf.hibernate.Session;
 13  
 14  import org.springframework.orm.hibernate.HibernateCallback;
 15  import org.springframework.orm.hibernate.support.HibernateDaoSupport;
 16  
 17  
 18  /**
 19   * <p>Title: </p>
 20   * <p>Description: </p>
 21   * <p>Copyright: Copyright (c) 2004</p>
 22   * <p>Company: </p>
 23   * @author 段洪杰
 24   * @version 1.0
 25   */

 26  
27  public class InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO {
 28    /**
 29     * 构造函数
 30     */

31    public InfoDAOImpl() {
 32      super();
 33    }
 34  
 35  
 36    /**
 37     * 增加记录
 38     * @param info Info
 39     */

40    public void setInfo(Info info) throws Exception {
 41      getHibernateTemplate().save(info);
 42    }
 43  
 44  
 45    /**
 46     * 通过ID取得记录
 47     * @param id String
 48     * @return Info
 49     */

50    public Info getInfoById(String id) throws Exception {
 51      Info info = (Info) getHibernateTemplate().load(Info.class, id);
 52      return info;
 53    }
 54  
 55  
 56    /**
 57     * 修改记录
 58     * @param Info info
 59     */

60    public void modifyInfo(Info info) throws Exception {
 61      getHibernateTemplate().update(info);
 62    }
 63  
 64  
 65    /**
 66     * 删除记录
 67     * @param Info info
 68     */

69    public void removeInfo(Info info) throws Exception {
 70      getHibernateTemplate().delete(info);
 71    }
 72  
 73  
 74    ////////////////////////////////////////////////////////
 75    /////                                                ///
 76    /////以下部份不带审核功Ä軤                             ///
 77    /////                                                ///
 78    ////////////////////////////////////////////////////////
 79  
 80    /**
 81     * 取记录总数
 82     * @return int
 83     */

84    public int getInfosCount() throws Exception {
 85      int count = 0;
 86      String queryString = "select count(*) from Info";
 87      count = ((Integer) getHibernateTemplate().iterate(queryString).next()).
 88              intValue();
 89      return count;
 90    }
 91  
 92  
 93    /**
 94     * 取所有记录集合
 95     * @return Iterator
 96     */

97    public Iterator getAllInfos() throws Exception {
 98      Iterator iterator = null;
 99      String queryString = " select info from Info as info order by info.id desc";
 100     List list = getHibernateTemplate().find(queryString);
 101     iterator = list.iterator();
 102     return iterator;
 103   }
 104 
 105 
 106   /**
 107    * 取记录集合
 108    * @return Iterator
 109    * @param int position, int length
 110    */

111   public Iterator getInfos(int position, int length) throws Exception {
 112     Iterator iterator = null;
 113     String queryString = " select info from Info as info order by info.id desc";
 114     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 115     //设置游标的起始点
 116     query.setFirstResult(position);
 117     //设置游标的长度
 118     query.setMaxResults(length);
 119     //记录生成
 120     List list = query.list();
 121     //把查询到的结果放入迭代器
 122     iterator = list.iterator();
 123     return iterator;
 124   }
 125 
 126 
 127   /**
 128    * 取第一条记录
 129    * @throws Exception
 130    * @return Station
 131    */

132   public Info getFirstInfo() throws Exception {
 133     Iterator iterator = null;
 134     Info info = null;
 135     String queryString = "select info from Info as info order by info.id desc";
 136     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 137     //记录生成
 138     List list = query.list();
 139     //把查询到的结果放入迭代器
 140     iterator = list.iterator();
141     if (iterator.hasNext()) {
 142       info = (Info) iterator.next();
 143     }
 144     return info;
 145   }
 146 
 147 
 148   /**
 149    * 取最后一条记录
 150    * @throws Exception
 151    * @return Station
 152    */

153   public Info getLastInfo() throws Exception {
 154     Iterator iterator = null;
 155     Info info = null;
 156     String queryString = "select info from Info as info order by info.id asc";
 157     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 158     //记录生成
 159     List list = query.list();
 160     //把查询到的结果放入迭代器
 161     iterator = list.iterator();
162     if (iterator.hasNext()) {
 163       info = (Info) iterator.next();
 164     }
 165     return info;
 166 
 167   }
 168 
 169 
 170   ////////////////////////////////////////////////////////
 171   /////                                                ///
 172   ///// 以下部份表中要有特定字段才能Õ吩诵袪 牳鋈撕推笠禒    ///
 173   /////                                                ///
 174   ////////////////////////////////////////////////////////
 175 
 176   /**
 177    * 取符合条件记录总数, [表中要有 isperson 字段]
 178    * @return int
 179    * @param int isPerson
 180    */

 181 
182   public int getInfosCountByIsperson(int isPerson) throws Exception {
 183     int count = 0;
 184     String queryString =
 185         "select count(*) from Info as info where info.isperson =" + isPerson;
 186     count = ((Integer) getHibernateTemplate().iterate(queryString).next()).
 187             intValue();
 188     return count;
 189   }
 190 
 191 
 192   /**
 193    * 取所有符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]
 194    * @return Iterator
 195    * @param int isPerson
 196    */

 197 
198   public Iterator getAllInfosByIsperson(int isPerson) throws Exception {
 199     Iterator iterator = null;
 200     String queryString = " select info from Info as info where info.isperson =" +
 201                          isPerson + " order by info.id desc";
 202     List list = getHibernateTemplate().find(queryString);
 203     //把查询到的结果放入迭代器
 204     iterator = list.iterator();
 205     return iterator;
 206   }
 207 
 208 
 209   /**
 210    * 取符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]
 211    * @return Iterator
 212    * @param int isPerson,int position, int length
 213    */

 214 
 215   public Iterator getInfosByIsperson(int isPerson, int position, int length) throws
216       Exception {
 217     Iterator iterator = null;
 218     String queryString = " select info from Info as info where info.isperson =" +
 219                          isPerson + " order by info.id desc";
 220     //创建查询
 221     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 222     //设置游标的起始点
 223     query.setFirstResult(position);
 224     //设置游标的长度
 225     query.setMaxResults(length);
 226     //记录生成
 227     List list = query.list();
 228     //把查询到的结果放入迭代器
 229     iterator = list.iterator();
 230     return iterator;
 231   }
 232 
 233 
 234   ////////////////////////////////////////////////////////
 235   /////                                                ///
 236   ///// 以下部份表中要有特定字段才能Õ吩诵袪  查询部份      ///
 237   /////                                                ///
 238   ///////////////////////////////////////////////////////
 239   /**
 240    * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段]
 241    * @return int
 242    * @param String text
 243    */

244   public int getInfosCount(String text) throws Exception {
 245     int count = 0;
 246     count = ((Integer) getHibernateTemplate().iterate(
 247         "select count(*) from Info as info where info.title like '%" + text +
 248         "%'
").next()).intValue();
 249     return count;
 250   }
 251 
 252 
 253   /**
 254    * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
 255    * @return Iterator
 256    * @param String text
 257    */

 258 
259   public Iterator getAllInfos(String text) throws Exception {
 260     Iterator iterator = null;
 261     String queryString =
 262         " select info from Info as info where info.title like '%" + text +
 263         "%'
order by info.id desc";
 264     //创建查询
 265     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 266     //记录生成
 267     List list = query.list();
 268     //把查询到的结果放入迭代器
 269     iterator = list.iterator();
 270     return iterator;
 271   }
 272 
 273 
 274   /**
 275    * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
 276    * @return Iterator
 277    * @param String text,int position, int length
 278    */

 279   public Iterator getInfos(String text, int position, int length) throws
280       Exception {
 281     Iterator iterator = null;
 282     String queryString =
 283         " select info from Info as info where info.title like '%" + text +
 284         "%'
order by info.id desc";
 285 
 286     //创建查询
 287     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 288     //设置游标的起始点
 289     query.setFirstResult(position);
 290     //设置游标的长度
 291     query.setMaxResults(length);
 292     //记录生成
 293     List list = query.list();
 294     //把查询到的结果放入迭代器
 295     iterator = list.iterator();
 296     return iterator;
 297   }
 298 
 299 
 300   ////////////////////////////////////////////////////////
 301   /////                                                ///
 302   ///// 以下部份表中要有特定字段才能Õ吩诵袪 犠⒉嵯喙貭     ///
 303   /////                                                ///
 304   ////////////////////////////////////////////////////////
 305 
 306   /**
 307    * 取符合条件记录总数.[ 表中要有 registername 字段]
 308    * @return int
 309    * @param String text
 310    */

311   public int getInfosCountByRegisterName(String registerName) throws Exception {
 312     int count = 0;
 313     count = ((Integer) getHibernateTemplate().iterate(
 314         "select count(*) from Info as info where info.registername = '" +
 315         registerName + "'
").next()).intValue();
 316     return count;
 317   }
 318 
 319 
 320   /**
 321    * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername字段]
 322    * @param registername String
 323    * @return Info
 324    */

325   public Info getInfoByRegisterName(String registerName) throws Exception {
 326     Iterator iterator = null;
 327     Info info = null;
 328     String queryString =
 329         " select info from Info as info where info.registername='" +
 330         registerName + "'
order by info.id desc";
 331     //创建查询
 332     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 333     //记录生成
 334     List list = query.list();
 335     //把查询到的结果放入迭代器
 336     iterator = list.iterator();
337     if (iterator.hasNext()) {
 338       info = (Info) iterator.next();
 339     }
 340     return info;
 341   }
 342 
 343 
 344   /**
 345    * 通过注册名取得所有记录集合.[表中要有 registername字段]
 346    * @param registername String
 347    * @return Iterator
 348    */

 349   public Iterator getAllInfosByRegisterName(String registerName) throws
350       Exception {
 351     Iterator iterator = null;
 352     String queryString =
 353         " select info from Info as info where info.registername='" +
 354         registerName + "'
order by info.id desc";
 355     //创建查询
 356     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 357     //记录生成
 358     List list = query.list();
 359     //把查询到的结果放入迭代器
 360     iterator = list.iterator();
 361     return iterator;
 362   }
 363 
 364 
 365   /**
 366    * 通过注册名取得记录列表.[表中要有 registername字段]
 367    * @param registername String
 368    * @return Iterator
 369    */

 370   public Iterator getInfosByRegisterName(String registerName, int position,
371                                          int length) throws Exception {
 372     Iterator iterator = null;
 373     String queryString =
 374         " select info from Info as info where info.registername='" +
 375         registerName + "'
order by info.id desc";
 376     //创建查询
 377     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 378     //设置游标的起始点
 379     query.setFirstResult(position);
 380     //设置游标的长度
 381     query.setMaxResults(length);
 382     //记录生成
 383     List list = query.list();
 384     //把查询到的结果放入迭代器
 385     iterator = list.iterator();
 386     return iterator;
 387   }
 388 
 389 
 390   ////////////////////////////////////////////////////////
 391   /////                                                ///
 392   ///// 以下部份表中要有特定字段才能Õ吩诵袪   犑餍桶婵闋    ///
 393   /////                                                ///
 394   ////////////////////////////////////////////////////////
 395 
 396   /**
 397    * 取记录总数.[ 表中要有 board_id 字段]
 398    * @return int
 399    * @param String boardId
 400    */

401   public int getInfosCountByBoard(String boardId) throws Exception {
 402     int count = 0;
 403 
 404     count = ((Integer) getHibernateTemplate().iterate(
 405         "select count(*) from Info as info where info.boardId = '" + boardId +
 406         "'
").next()).intValue();
 407 
 408     return count;
 409   }
 410 
 411 
 412   /**
 413    * 通过版块名取得所有记录集合.[表中要有 board_id字段]
 414    * @param BoardId String
 415    * @return Iterator
 416    */

417   public Iterator getAllInfosByBoard(String boardId) throws Exception {
 418     Iterator iterator = null;
 419     String queryString = " select info from Info as info where info.boardId='" +
 420                          boardId + "'
order by info.id desc";
 421     //创建查询
 422     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 423     //记录生成
 424     List list = query.list();
 425     //把查询到的结果放入迭代器
 426     iterator = list.iterator();
 427     return iterator;
 428   }
 429 
 430 
 431   /**
 432    * 通过版块名取得记录列表.[表中要有 board_id字段]
 433    * @param BoardId String
 434    * @return Iterator
 435    */

 436   public Iterator getInfosByBoard(String boardId, int position, int length) throws
437       Exception {
 438     Iterator iterator = null;
 439     String queryString = " select info from Info as info where info.boardId='" +
 440                          boardId + "'
order by info.id desc";
 441 
 442     //创建查询
 443     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 444     //设置游标的起始点
 445     query.setFirstResult(position);
 446     //设置游标的长度
 447     query.setMaxResults(length);
 448     //记录生成
 449     List list = query.list();
 450     //把查询到的结果放入迭代器
 451     iterator = list.iterator();
 452 
 453     return iterator;
 454 
 455   }
 456 
 457 
 458   /**
 459    * 取符合条件记录总数.[ 表中要有 board_id 字段,title]  模糊查询title
 460    * @return int
 461    * @param String boardId ,String text
 462    */

463   public int getInfosCountByBoard(String boardId, String text) throws Exception {
 464     int count = 0;
 465 
 466     count = ((Integer) getHibernateTemplate().iterate(
 467         "select count(*) from Info as info where info.boardId='" + boardId +
 468         "'
and info.title like '%" + text + "%'").next()).intValue();
 469 
 470     return count;
 471 
 472   }
 473 
 474 
 475   /**
 476    * 通过版块名取得记录列表.[表中要有 board_id字段]  模糊查询title
 477    * @param String boardID,int position, int length
 478    * @return Iterator
 479    */

 480   public Iterator getInfosByBoard(String boardId, int position, int length,
481                                   String text) throws Exception {
 482     Iterator iterator = null;
 483     String queryString = " select info from Info as info where info.boardId='" +
 484                          boardId + "'
and info.title like '%" + text +
 485                          "%'
order by info.id desc";
 486 
 487     //创建查询
 488     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 489     //设置游标的起始点
 490     query.setFirstResult(position);
 491     //设置游标的长度
 492     query.setMaxResults(length);
 493     //记录生成
 494     List list = query.list();
 495     //把查询到的结果放入迭代器
 496     iterator = list.iterator();
 497     return iterator;
 498 
 499   }
 500 
 501 
 502   ////////////////////////////////////////////////////////
 503   /////                                                ///
 504   /////以下部份带有审核功Ä軤                             ///
 505   /////                                                ///
 506   ////////////////////////////////////////////////////////
 507 
 508   /**
 509    * 取记录总数
 510    * @return int
 511    * @param int isAuditing
 512    */

513   public int getInfosCount(int isAuditing) throws Exception {
 514     int count = 0;
 515 
 516     count = ((Integer) getHibernateTemplate().iterate(
 517         "select count(*) from Info as info where info.isauditing=" +
 518         isAuditing).next()).intValue();
 519     return count;
 520   }
 521 
 522 
 523   /**
 524    * 取所有记录集合
 525    * @return Iterator
 526    * @param int position, int length,int isAuditing
 527    */

528   public Iterator getAllInfos(int isAuditing) throws Exception {
 529     Iterator iterator = null;
 530     String queryString =
 531         " select info from Info as info where info.isauditing=" + isAuditing +
 532         " order by info.id desc";
 533     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 534     //记录生成
 535     List list = query.list();
 536     //把查询到的结果放入迭代器
 537     iterator = list.iterator();
 538     return iterator;
 539   }
 540 
 541 
 542   /**
 543    * 取记录集合
 544    * @return Iterator
 545    * @param int position, int length,int isAuditing
 546    */

 547   public Iterator getInfos(int position, int length, int isAuditing) throws
548       Exception {
 549     Iterator iterator = null;
 550     String queryString =
 551         " select info from Info as info where info.isauditing=" + isAuditing +
 552         " order by info.id desc";
 553 
 554     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 555     //设置游标的起始点
 556     query.setFirstResult(position);
 557     //设置游标的长度
 558     query.setMaxResults(length);
 559     //记录生成
 560     List list = query.list();
 561     //把查询到的结果放入迭代器
 562     iterator = list.iterator();
 563 
 564     return iterator;
 565   }
 566 
 567 
 568   ////////////////////////////////////////////////////////////////
 569   /////                                                       ///
 570   ///// 以下部份表中要有特定字段才能Õ吩诵Ð 有审核功Ä軤 个人和Æ笠禒  ///
 571   /////                                                       ///
 572   ///////////////////////////////////////////////////////////////
 573 
 574   /**
 575    * 取符合条件记录总数, [表中要有 isperson isAuditing 字段]
 576    * @return int
 577    * @param int isPerson,int isAuditing
 578    */

 579 
 580   public int getInfosCountByIsperson(int isPerson, int isAuditing) throws
581       Exception {
 582     int count = 0;
 583 
 584     count = ((Integer) getHibernateTemplate().iterate(
 585         "select count(*) from Info as info where info.isperson =" + isPerson +
 586         " and info.isauditing=" + isAuditing).next()).intValue();
 587 
 588     return count;
 589   }
 590 
 591 
 592   /**
 593    * 取所有符合条件记录集合, 模糊查询条件.[表中要有 isperson isAuditing 字段]
 594    * @return Iterator
 595    * @param int isPerson,int isAuditing
 596    */

 597 
 598   public Iterator getAllInfosByIsperson(int isPerson, int isAuditing) throws
599       Exception {
 600     Iterator iterator = null;
 601     String queryString = " select info from Info as info where info.isperson =" +
 602                          isPerson + " and info.isauditing=" + isAuditing +
 603                          " order by info.id desc";
 604 
 605     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 606     //记录生成
 607     List list = query.list();
 608     //把查询到的结果放入迭代器
 609     iterator = list.iterator();
 610 
 611     return iterator;
 612   }
 613 
 614 
 615   /**
 616    * 取符合条件记录集合, 模糊查询条件.[表中要有 isperson isAuditing 字段]
 617    * @return Iterator
 618    * @param int isPerson,int position, int length,int isAuditing
 619    */

 620 
 621   public Iterator getInfosByIsperson(int isPerson, int position, int length,
622                                      int isAuditing) throws Exception {
 623     Iterator iterator = null;
 624     String queryString = " select info from Info as info where info.isperson =" +
 625                          isPerson + " and info.isauditing=" + isAuditing +
 626                          " order by info.id desc";
 627 
 628     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 629     //设置游标的起始点
 630     query.setFirstResult(position);
 631     //设置游标的长度
 632     query.setMaxResults(length);
 633     //记录生成
 634     List list = query.list();
 635     //把查询到的结果放入迭代器
 636     iterator = list.iterator();
 637 
 638     return iterator;
 639 
 640   }
 641 
 642 
 643   ////////////////////////////////////////////////////////
 644   /////                                                ///
 645   ///// 要有特定字段才能Õ吩诵袪  有审核功Ä軤   查询部份    ///
 646   /////                                                ///
 647   ///////////////////////////////////////////////////////
 648   /**
 649    * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段]
 650    * @return int
 651    * @param String text,int isAuditing
 652    */

653   public int getInfosCount(String text, int isAuditing) throws Exception {
 654     int count = 0;
 655 
 656     count = ((Integer) getHibernateTemplate().iterate(
 657         "select count(*) from Info as info where info.isauditing=" +
 658         isAuditing + " and info.title like '%" + text + "%'").next()).
 659             intValue();
 660 
 661     return count;
 662   }
 663 
 664 
 665   /**
 666    * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
 667    * @return Iterator
 668    * @param String text,int isAuditing
 669    */

 670 
671   public Iterator getAllInfos(String text, int isAuditing) throws Exception {
 672     Iterator iterator = null;
 673     String queryString =
 674         " select info from Info as info where info.isauditing=" + isAuditing +
 675         " and info.title like '%" + text + "%' order by info.id desc";
 676 
 677     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 678     //记录生成
 679     List list = query.list();
 680     //把查询到的结果放入迭代器
 681     iterator = list.iterator();
 682 
 683     return iterator;
 684   }
 685 
 686 
 687   /**
 688    * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
 689    * @return Iterator
 690    * @param String text,int position, int length,int isAuditing
 691    */

 692   public Iterator getInfos(String text, int position, int length,
693                            int isAuditing) throws Exception {
 694     Iterator iterator = null;
 695     String queryString =
 696         " select info from Info as info where info.isauditing=" + isAuditing +
 697         " and info.title like '%" + text + "%' order by info.id desc";
 698 
 699     //创建查询
 700     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 701     //设置游标的起始点
 702     query.setFirstResult(position);
 703     //设置游标的长度
 704     query.setMaxResults(length);
 705     //记录生成
 706     List list = query.list();
 707     //把查询到的结果放入迭代器
 708     iterator = list.iterator();
 709 
 710     return iterator;
 711   }
 712 
 713 
 714   ////////////////////////////////////////////////////////
 715   /////                                                ///
 716   ///// 要有特定字段才能Õ吩诵袪  有审核功Ä軤 注册相关      ///
 717   /////                                                ///
 718   ////////////////////////////////////////////////////////
 719 
 720   /**
 721    * 取符合条件记录总数.[ 表中要有 registername isauditing字段]
 722    * @return int
 723    * @param String text,int isAuditing
 724    */

 725   public int getInfosCountByRegisterName(String registerName, int isAuditing) throws
726       Exception {
 727     int count = 0;
 728 
 729     count = ((Integer) getHibernateTemplate().iterate(
 730         "select count(*) from Info as info where info.isauditing=" +
 731         isAuditing + " and info.registername = '" + registerName + "'").next()).
 732             intValue();
 733 
 734     return count;
 735   }
 736 
 737 
 738   /**
 739    * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername isauditing字段]
 740    * @param registername String,int isAuditing
 741    * @return Info
 742    */

 743   public Info getInfoByRegisterName(String registerName, int isAuditing) throws
744       Exception {
 745     Iterator iterator = null;
 746     Info info = null;
 747 
 748     String queryString =
 749         " select info from Info as info where info.isauditing=" + isAuditing +
 750         " and info.registername='" + registerName + "' order by info.id desc";
 751 
 752     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 753     //记录生成
 754     List list = query.list();
 755     //把查询到的结果放入迭代器
 756     iterator = list.iterator();
757     if (iterator.hasNext()) {
 758       info = (Info) iterator.next();
 759     }
 760 
 761     return info;
 762   }
 763 
 764 
 765   /**
 766    * 通过注册名取得所有记录集合.[表中要有 registername isauditing字段]
 767    * @param registername String,int isAuditing
 768    * @return Iterator
 769    */

 770   public Iterator getAllInfosByRegisterName(String registerName, int isAuditing) throws
771       Exception {
 772     Iterator iterator = null;
 773 
 774     String queryString =
 775         " select info from Info as info where info.isauditing=" + isAuditing +
 776         " and info.registername='" + registerName + "' order by info.id desc";
 777 
 778     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 779     //记录生成
 780     List list = query.list();
 781     //把查询到的结果放入迭代器
 782     iterator = list.iterator();
 783 
 784     return iterator;
 785   }
 786 
 787 
 788   /**
 789    * 通过注册名取得记录列表.[表中要有 registername isauditing字段]
 790    * @param registername String,int isAuditing
 791    * @return Iterator
 792    */

 793   public Iterator getInfosByRegisterName(String registerName, int position,
 794                                          int length, int isAuditing) throws
795       Exception {
 796     Iterator iterator = null;
 797     String queryString =
 798         " select info from Info as info where info.isauditing=" + isAuditing +
 799         " and info.registername='" + registerName + "' order by info.id desc";
 800 
 801     //创建查询
 802     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 803     //设置游标的起始点
 804     query.setFirstResult(position);
 805     //设置游标的长度
 806     query.setMaxResults(length);
 807     //记录生成
 808     List list = query.list();
 809     //把查询到的结果放入迭代器
 810     iterator = list.iterator();
 811 
 812     return iterator;
 813   }
 814 
 815 
 816   ////////////////////////////////////////////////////////
 817   /////                                                ///
 818   ///// 要有特定字段才能Õ吩诵袪  有审核功能 树型版块       ///
 819   /////                                                ///
 820   ////////////////////////////////////////////////////////
 821 
 822   /**
 823    * 取记录总数.[ 表中要有 board_id isauditing字段]
 824    * @return int
 825    * @param String boardId,int isAuditing
 826    */

 827   public int getInfosCountByBoard(String boardId, int isAuditing) throws
828       Exception {
 829     int count = 0;
 830 
 831     count = ((Integer) getHibernateTemplate().iterate(
 832         "select count(*) from Info as info where info.isauditing=" +
 833         isAuditing + " and info.boardId = '" + boardId + "'").next()).intValue();
 834 
 835     return count;
 836   }
 837 
 838 
 839   /**
 840    * 通过版块名取得所有记录集合.[表中要有 board_id isauditing字段]
 841    * @param BoardId String,int isAuditing
 842    * @return Iterator
 843    */

 844   public Iterator getAllInfosByBoard(String boardId, int isAuditing) throws
845       Exception {
 846     Iterator iterator = null;
 847 
 848     String queryString =
 849         " select info from Info as info where info.isauditing=" + isAuditing +
 850         " and info.boardId='" + boardId + "' order by info.id desc";
 851 
 852     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 853     //记录生成
 854     List list = query.list();
 855     //把查询到的结果放入迭代器
 856     iterator = list.iterator();
 857     return iterator;
 858   }
 859 
 860 
 861   /**
 862    * 通过版块名取得记录列表.[表中要有 board_id isauditing字段]
 863    * @param BoardId String,int isAuditing
 864    * @return Iterator
 865    */

 866   public Iterator getInfosByBoard(String boardId, int position, int length,
867                                   int isAuditing) throws Exception {
 868     Iterator iterator = null;
 869     String queryString =
 870         " select info from Info as info where info.isauditing=" + isAuditing +
 871         " and info.boardId='" + boardId + "' order by info.id desc";
 872 
 873     //创建查询
 874     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 875     //设置游标的起始点
 876     query.setFirstResult(position);
 877     //设置游标的长度
 878     query.setMaxResults(length);
 879     //记录生成
 880     List list = query.list();
 881     //把查询到的结果放入迭代器
 882     iterator = list.iterator();
 883 
 884     return iterator;
 885 
 886   }
 887 
 888 
 889   /**
 890    * 取符合条件记录总数.[ 表中要有 board_id isauditing字段,title]  模糊查询title
 891    * @return int
 892    * @param String boardId ,String text,int isAuditing
 893    */

 894   public int getInfosCountByBoard(String boardId, String text, int isAuditing) throws
895       Exception {
 896     int count = 0;
 897 
 898     count = ((Integer) getHibernateTemplate().iterate(
 899         "select count(*) from Info as info where info.isauditing=" +
 900         isAuditing + " and info.boardId='" + boardId +
 901         "'
and info.title like '%" +
 902         text + "%'
").next()).intValue();
 903 
 904     return count;
 905 
 906   }
 907 
 908 
 909   /**
 910    * 通过版块名取得记录列表.[表中要有 board_id字段 isauditing]  模糊查询title
 911    * @param String boardId,int position, int length,int isAuditing
 912    * @return Iterator
 913    */

 914   public Iterator getInfosByBoard(String boardId, int position, int length,
915                                   String text, int isAuditing) throws Exception {
 916     Iterator iterator = null;
 917     String queryString =
 918         " select info from Info as info where info.isauditing=" + isAuditing +
 919         " and info.boardId='" + boardId + "' and info.title like '%" + text +
 920         "%'
order by info.id desc";
 921 
 922     //创建查询
 923     Query query = getHibernateTemplate().createQuery(getSession(), queryString);
 924     //设置游标的起始点
 925     query.setFirstResult(position);
 926     //设置游标的长度
 927     query.setMaxResults(length);
 928     //记录生成
 929     List list = query.list();
 930     //把查询到的结果放入迭代器
 931     iterator = list.iterator();
 932 
 933     return iterator;
 934 
 935   }
 936 
 937 
 938 }
 939 
 940 
 
CODESYS Softmotion(一)功能介绍 一、CODESYS SoftMotion RTE SL产品 1.1 CODESYS Runtime SL 产品家族介绍 目前支持的主流厂商的硬件产品,让部署在上面的成为实时设备。 对于Windows系统,根据需求选择对应的Runtime: RTE极大的提高了实时性,适合进行运动控制,同时RTE还支持了多个主从站协议: 还可以选择可选的功能(Single License): RTE对硬件和系统有要求,如果你需要硬件功能,那么网卡会有最低要求。 1.2 RTE的下载和安装 在官网http://codes 阅读详情

相关推荐

FreeRTOS:卡在configASSERT( ( pxQueue ) )问题的解决

FreeRTOS卡在configASSERT( ( pxQueue ) )问题的解决

qq_42007164的博客 9567

Spring+hibernate dao和service层的单元测试

查了半天的资料,终于搞清楚了如何在hibernate+spring的框架下对DAO层和service层进行测试了。我把自己的经验总结一下,希望对大家有所帮助。最重要的是applicationContext.xml的配置,dao的配置如下   class="com.finegold

请叫我 6518

ZEMAX学习 6.一个照相物镜的设计

曲线越平滑表示场曲越小,曲线越接近水平,系统边缘与中心对比度越接近,虚实越接近表示色差和色散越好;第1个面设计不合理,出现前后表面相交的情况,点击第1面厚度,选择边缘厚度,设置为0.1,第1面厚度被控制在0.1mm厚,系统根据这一设置始终保持第1面边缘厚度为0.1mm。要求:设计一个照相物镜,焦距f=9mm,F#为4,视场角40°;添加有效焦距操作数EFFL 9mm 权重为1,设置优化变量,如下图,ctrl+shift+o打开优化界面。报告中系统数据有效焦距为67.381mm,设计要求为9mm;

qq_24542783的博客 4712

Hibernate+Spring 对DAO的处理实列!

java代码:  package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Info; import net.sf.hib

土豆原创(Linux+JAVA) 1321

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2325

k最近邻算法——电影分类及案例详解

如图3-7所示,若将国际象棋棋盘放在二维直角坐标系中,格子的边长定义为1,坐标的x轴及y轴和棋盘方格平行,原点恰落在某一格的中心点,则王从一个位置走到其他位置需要的步数恰为二个位置的切比雪夫距离,因此切比雪夫距离也称为棋盘距离。关于这里的距离度量,这个电影分类的例子有2个特征,也就是2维的,可以使用我们高中学过的两点距离公式(两点距离公式其实就是欧氏距离在二维空间上的公式,也就是欧氏距离n的值为2的情况,欧氏距离也称为欧几里德距离)来计算距离,如图3-3所示。对数据进行归一化,避免量纲对计算距离的影响。

ZhShy 4558

Sping+Struts2+Hibernate中如何用main方法实例化dao或service

demo1 public static void main(String[] args) {     ApplicationContext context = new ClassPathXmlApplicationContext(               new String[] {"applicationContext.xml"});       SessionFactory ses

sunny_sailor的专栏 1605

避坑指南:在Ubuntu 22.04上配置UR5e与ROS2 Humble真机通信的完整流程

本文详细介绍了在Ubuntu 22.04上配置UR5e机械臂与ROS2 Humble真机通信的完整流程,包括环境准备、网络配置、URCap安装、ROS2驱动部署及控制器状态验证等关键步骤。特别针对常见问题如网络连接失败、驱动启动错误等提供了实用解决方案,帮助工程师高效完成UR5e与ROS2的集成工作。

weixin_30790841的博客 465

Spring企业课四,spring+hibernate实现dao层

这次准备实现的内容与企业课三一样,只不过将jdbc部分换成了hibernate,其余几乎没变。既然使用hibernate,那么我们需要配置hibernate的配置文件,需要在spring的配置文件中拿到hibernate给我们的关于数据库连接的对象。让我们一步一步来,先看hibernate.cfg.xml&lt;?xml version='1.0' encoding='utf-8'?&gt; &...

过程就是奖励 508

Claude Code与Codex深度对比:终端AI编程助手选型指南

大语言模型驱动的AI编程助手已成为开发者提效的重要工具,它们基于自然语言交互,自动完成代码生成、重构和调试。这类工具依赖上下文理解与工程实践,不同产品在交互模式、模型接入和任务执行上差异显著。从终端CLI编程场景出发,梳理AI编程助手的设计原理与技术价值,重点对比Anthropic Claude Code与OpenAI Codex在安装配置、上下文管理、第三方模型接入(如DeepSeek)以及高频报错处理上的实际表现。无论你是新手还是资深工程师,理解这些差异有助于根据自身工作流选择合适工具,或在两者间灵活切

weixin_33755649的博客 3239

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 552

如何在DAO层既使用注解又使用HibernateDaoSupport

说明: 1.在使用spring的时候,如何你用注解来实例化XxxDao,就无法继承HibernateDaoSupport.. 2.使用xml配置的话,可以通过继承HibernateDaoSupport来进行持久化操作. 定义自己的MyDaoSupport类: package dao; import javax.annotation.Resource; import org.hi

【小喵】的博客 6803

相位编码脉冲压缩信号的理论研究与 Matlab 实现

通过实际的代码示例,我们展示了如何生成信号、进行相位编码、传输信号、相位解码和脉冲压缩的步骤。相位编码脉冲压缩信号是通过在发射端对信号进行相位编码,并在接收端对信号进行相位解码来实现的。其主要原理是在发射端将信号的频率进行调制,使得信号具有宽带特性,然后在接收端通过匹配滤波器对信号进行解调和压缩,从而提高信号的分辨率和抗干扰能力。相位编码脉冲压缩信号是一种在信号处理中常用的技术,用于提高信号的分辨率和抗干扰能力。可以使用 Matlab 中的信号生成函数生成一个宽带脉冲信号,例如矩形脉冲信号或高斯脉冲信号。

CyberWizarDD的博客 904

Hibernate和Spring对DAO处理的实例

引用"Spring"手册上的话说: Hibernate+Spring显然是天生的结合. 下面是我用spring处理的一个HibernateDAO实例,可以看到,代码量大大减少了. java代码:  1     2   package infoweb.dao;  3     4   import java.util.List;  5   import java.util.

鲤鱼商城 2362

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hibernate的DAO实现

10.7  Hibernate的DAO实现DAO对象是模块化的数据库访问组件,DAO对象通常包括:对持久化类的基本CRUD操作(插入、查询、更新、删除)操作。Spring对Hibernate的DAO实现提供了良好的支持。主要有如下两种方式的DAO实现:q      继承HibernateDaoSupport的实现DAOq      基于Hibernate3.0实现DAO不管采用哪一种实

ZWeb-Blog 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring+HIbernate通用层Dao和Service实现

因为DAO层基本的就是CRUD操作,变化不是很大,要是有变化的那就是查询。而确实没有必要为每一个实体写一个完整的DAO,但是没有还不行,那就“抽取”出来吧。而Service依赖与DAO层,有时就是简单调用一下,也确实没有必要每个都写。总之,不爱写多个,那就写一个通用的,而其他的继承或实现这个通用的可以了。 还是用代码说话吧。 Java代码   package or

逍遥飞鹤的专栏 2890

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

继承HibernateDaoSupport实现DAO(spring整合hibernate)

<br />Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:    public final HibernateTemplate getHibernateTemplate()<br /> public final void setSessionFactory(SessionFactory sessionFactory)<br />其中,setSessionFactory方法用来接收Spring的ApplicationCo

hjjzhangkui的专栏 1万+

DAO测试策略(spring, hibernate)

对于dao层的测试, 集成测试和隔离的单元测试各有优劣. 利用一些Stub的隔离的单元测试速度比较快, 但是不能够测试dao与数据库的交互是否工作. 而集成测试的速度可能因为要建立实际的数据库连接或数据库存在于远程机器上而速度要慢一些, 但它能够真正测试dao与数据库的交互是否正常工作. 在这两种测试中,我更倾向于使用集成测试.下面是我在一个项目(使用spring, hibernate)中的一

zgmzyr的专栏 1690

Struts2 + Spring + Hibernate 通用 Service 和 DAO

我在 Struts2 + Spring + Hibernate  项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo。使用这两个Service 和 DAO 可以极大地提高开发的效率,不必再分别针对不同的pojo编写对应的Service 和 DAO。内容如下: DAO: 接口:BaseDao.java package dao; import java.util

雷霄骅(leixiaohua1020)的专栏 7581

ajax关键知识点之Spring整合Hibernate的DAO层开发解析

本文解析了Spring整合Hibernate实现DAO层开发的关键技术。DAO层作为"数据库翻译官",隔离业务逻辑与数据访问,提升系统可维护性。Spring通过HibernateDaoSupport简化操作,LocalSessionFactoryBean管理SessionFactory配置。文章详细介绍了DAO接口与实现类的设计模式,以及N-1和1-N关联中延迟加载的优化策略,强调通过合理配置lazy属性平衡性能。整个方案采用面向接口编程,使数据持久层具有更好的移植性,适用于轻量级Jav

2301_78506709的博客 698

Hibernate的DAO实现方式简要总结

Hibernate的DAO实现 DAO对象是模块化的数据库访问组件,DAO对象通常包括:对持久化类的基本CRUD操作(插入、查询、更新、删除)操作。Spring对Hibernate的DAO实现提供了良好的支持。主要有如下两种方式的DAO实现:        1. 继承HibernateDaoSupport的实现DAO             2.基于Hibernate3.0实现D

横练技术 1931

论Spring与Hibernate的延迟加载和Dao模式

Spring 与 Hibernate 的延迟加载和 Dao 模式 Hibernate 与延迟加载: Hibernate 对象关系映射提供延迟的与非延迟的对象初始化。非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。这有时会导致成百的(如果不是成千的话) select 语句在读取对象的时候执行。这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被

sumongh我们在一起 2081

spring-DAO

使用DAO ( Data Access Object ,数据访问对象)设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑分离。 Spring中的DAO层能够以一致的方式轻松处理JDBC 、Hibernate或JPA等数据的访问技术,这使得可以相当容易地在上述持久化技术之间进行切换。 同时,Spring 的DAO层对各种技术的异常进行了封装,以便开发者能够使用统一的异常,而无须担心捕捉每种技...

demon7552003的小本本 2967

什么是Spring的DAO,Spring对JDBC/Hibernate的支持

 一:简介    1.定义:spring的dao不是新发明一种技术,而是对原来技术的一种封装,定义了一套         简单实用的api    2.使用dao的好处:降低了业务逻辑层和具体的持久层技术    3.spring对dao的支持,定义了一套完善的异常类  (1)运行时异常,业务层不用去捕获持久层异常  (2)异常的信息,可以反映异常发生的原因

meng090914的专栏 1957

Spring 和 Hibernate的集成

Spring对Hibernate的集成提供了很好的支持,Spring提供了对sessionfactory的初始化,用户不用再关心session的open,close,同时,Spring还提供了灵活的事务声明. 本文通过实例简单讲述如何在Spring中集成Hibernate. 1,将hibernate的配置加入到Spring的配置中(对datasource和sessionfactory进行配置)

交换一个思想,能得到俩思想 1万+

Hibernate自动生成的DAO的修改方法

Hibernate自动生成的DAO的修改方法 使用MyEclipse中用hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。 方法一、使用Spring的事务管理 方法二、修改DAO,添加事务处理 当然可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的封装,让业务层中掺杂了持久层代码。所以进行以下修改: import or

youngage的专栏 3834
上一篇: css tips
下一篇: Spring配置事务在DAO层和业务逻辑层
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值