上一篇文章我们看到了hibernate的作用,但是我们并没有贴出具体的数据访问层的代码,这是因为我们既然要使用这么多框架,当然就希望它们能够“黏合”的很好,譬如,我们不想使用代码处理事务,也就是说想使用声明式事务。这当然就是Spring大显身手的地方了。我们来看一看数据访问层的代码,还是面向接口编程:
1.下面是一个接口,它告诉外界可以做哪些事情,譬如按条件分页查询房屋信息,增加,修改,删除房屋信息,得到符合条件的房屋总数等!
package org.leno.houseHire.dao;
import java.util.List;
import org.leno.houseHire.action.Condition;
import org.leno.houseHire.dao.House;
public interface IHouseDAO {
public List<House> findAllHouse(Condition cond,final int start ,final int limit);
public House findById(int id);
public void addHouse(House house);
public void editHouse(House house);
public int delHouse(List<String> ids);
public long getTotalNums(Condition cond);
public List<Area> getAllAreas();
public List<Street> getAllStreets(int aid);
public String getAreaNameById(int id);
public String getStreetNameById(int id);
public User getUserById(int id);
public Street getStreetById(int id);
}
2.下面是一个利用Hibernate访问数据库的DAO实现,我们看到,它还继承了HibernateDaoSupport这个类,这是Spring对Hibernate提供的一个帮助支持类,它不仅封装了Hiberntate的实现,还对Hibernate操作涉及的事务进行统一管理。
package org.leno.houseHire.dao;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.leno.houseHire.action.Condition;
import org.leno.houseHire.dao.House;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class HouseDAOImpl extends HibernateDaoSupport implements IHouseDAO {
public void addHouse(House house) {
getHibernateTemplate().save(house);
}
public void editHouse(House house) {
getHibernateTemplate().update(house);
}
@SuppressWarnings("unchecked")
public List<House> findAllHouse(Condition cond, final int start,
final int limit) {
final String title = cond.getTitle();
final int room = cond.getRoom();
final int ting = cond.getTing();
final int areaId = cond.getAreaId();
final int streetId = cond.getStreetId();
final double priceStart = cond.getPriceStart();
final double priceEnd = cond.getPriceEnd();
final String booktime = cond.getBooktime();
final String sort = cond.getSortCond();
// 更通用可以换成DetachedCriteria
return (List<House>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria cr = session.createCriteria(House.class)
.setFirstResult(start).setMaxResults(limit);
if (title != null && !title.trim().equals("")) {
cr.add(Restrictions
.like("title", "%" + title + "%"));
}
if (room != 0) {
cr.add(Restrictions.eq("room", room));
}
if (ting != 0) {
cr.add(Restrictions.eq("ting", ting));
}
if (streetId == 0) {
if (areaId != 0) {
cr.createCriteria("street").createCriteria(
"area").add(
Restrictions.eq("aid", areaId));
}
}
if (streetId != 0) {
cr.createCriteria("street").add(
Restrictions.eq("sid", streetId));
}
if (priceEnd > 0) {
cr.add(Restrictions.between("hireprice",
priceStart, priceEnd));
}
if (booktime != null && !booktime.trim().equals("")) {
String sda = booktime + " " + "00:00:00";
String eda = booktime + " " + "23:59:59";
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
try {
Date start_date = sdf.parse(sda);
Date end_date = sdf.parse(eda);
cr.add(Restrictions.between("booktime",
start_date, end_date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (sort != null && sort.equals("desc")) {
cr.addOrder(Order.desc("booktime"));
}
List<House> list = cr.list();
return list;
}
});
}
/**
* 在Hibernate3中,对Criteria又增添了新功能,可以支持分组与统计功能,在Hibernate3中增加了Projections以及ProjectionList类,这两个类对分组与统计功能进行了封装
*/
public font-size: 9pt; color: rgb(127, 0, 85);
分享到:
相关推荐
标题 "ExtJS5 整合Spring4之二" 暗示了这是一个关于将流行的JavaScript框架ExtJS5与Java后端框架Spring4集成的主题。在Web应用开发中,这种集成允许开发者利用ExtJS5的富客户端功能和Spring4的强大后端服务。下面将...
【EXTJS 入门教程-SSH Maven Extjs4 MySQL实战开发】是一份详细的教程,旨在帮助初学者掌握EXTJS框架,结合SSH(Struts2、Spring、Hibernate)和Maven,利用MySQL数据库进行Web应用程序的开发。EXTJS是一个强大的...
3、ExtJS工具栏、菜单栏0 Q' y0 E. y E 4、ExtJS最常用的表单之textfield控件4 |4 ]8 ~/ d3 Y& k# X 5、ExtJs最常用表单组件Number、CheckBox、Radio* s, r% ~+ k; y# W 6、ExtJs最常用表单组件ComboBox、time、date...
整理了一下Spring、Spring mvc、Mybatis、ExtJs实战开发技术的内容,作为进阶提示
本教程旨在帮助初学者掌握ExtJS 5.0,并通过实战开发信息管理系统,将理论知识与实际应用相结合。 首先,我们要了解ExtJS的基础知识。这包括学习ExtJS的架构、事件模型、布局管理、组件系统以及数据绑定。在ExtJS中...
Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis),完整版,提供课件和代码下载! 本教程从Extjs5的开发环境搭建开始,讲解了Extjs5的项目结构(包括核心文件的作用...
extjs视频教程,基于spring+springMvc+mybatis框架开发,适合初学者,跟着视频教程入门
3. **数据管理与AJAX**:EXTJS2.2内置了强大的AJAX通信机制,能与后台Java服务无缝对接,实现异步数据交换。项目中,EXTJS通过Store与远程服务器进行数据交互,实现了动态加载、排序、过滤等功能,大大提高了用户...
在本篇博文中,我们将深入探讨“Spring3MVC+MyBatis+ExtJs3整合开发系列之四:角色管理模块”。这个主题涉及到三个关键的技术栈:Spring MVC作为后端MVC框架,MyBatis作为持久层解决方案,以及Ext Js 3作为前端UI库...
SSH_ExtJS项目实例是一个基于Java开发的Web应用程序,它结合了Spring、Struts2和Hibernate这三大主流的Java EE框架,并且利用Ext JS 4作为前端展示技术,提供了丰富的用户界面和交互体验。SSH(Spring、Struts2、...
EXTJS图书管理系统是一款基于EXTJS前端框架,结合后端Spring和Struts技术构建的应用系统,主要功能是实现图书的管理。EXTJS是一个强大的JavaScript库,提供了丰富的组件和UI控件,用于创建桌面级的Web应用,具有良好...
康海涛的"掏钱学ExtJs完全版"可能还包含了实战案例和项目开发流程,这些都能帮助你将理论知识转化为实际技能。学习过程中,你可能还会接触到主题定制、性能优化、单元测试等方面的知识,这些都是成为ExtJs开发高手不...
标题中的“ExtJs+java(SSH)项目源码”指的是一个综合了前端ExtJs框架和后端Java SSH(Struts2、Spring、Hibernate)框架的实际项目源代码。这个项目源码提供了一个完整的开发实例,可以帮助开发者深入理解如何将这...
7. **学习价值**:对于初学者来说,这个例子提供了一个实践SSH整合的实战平台,可以深入理解每个框架在实际项目中的作用,以及它们如何协同工作。通过调试和修改代码,可以进一步提升对SSH和ExtJS的理解。 总结来说...
在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...
EXTJS图书管理系统是一款基于EXTJS前端框架,结合后端Spring和Struts框架开发的应用程序,旨在实现高效、用户友好的图书信息管理。该系统包含了完整的源代码,为开发者提供了学习EXTJS及其集成应用的实践案例。 ...
这是一个基于Java技术栈的图书管理系统源码,使用了ExtJs作为前端框架,Struts2、Hibernate和Spring作为后端框架,结合MySQL数据库进行数据存储。这个系统是许多开发者和学生进行学习、实践或毕业设计的理想选择。...
在“Spring MVC + MyBatis + ExtJS3 整合开发:登陆模块演示,实战开发”这个项目中,我们将深入探讨这三个技术如何协同工作以实现一个完整的登录功能。 首先,Spring MVC 框架的核心组件包括DispatcherServlet、...
1. **ExtJS4+SSH2+JBPMʵۣ.docx** - 这个文件名可能包含了一个完整的实现案例,涵盖了ExtJS 4与SSH2(Spring、Struts、Hibernate三大Java开源框架的组合)以及jbpm4的整合。文档可能包含了详细步骤、代码片段和解释...
这是一个综合性的IT教程,专注于使用EXTJS、Struts2、iBatis和Spring框架进行Web应用程序开发的实践案例。这些技术都是Java Web开发中的重要组成部分,各自在不同的层面提供强大的功能。 EXTJS是一个前端JavaScript...