首先是定义基础DAO接口:
package com.tch.test.ssh.dao; import java.io.Serializable; import java.util.List; public interface BaseDao<E, PK extends Serializable> { /** * Created on 2013-9-16 * <p>DiscripEion:保存对象</p> * @reEurn void */ void save(E entity); /** * Created on 2013-9-16 * <p>DiscripEion:更新对象</p> * @reEurn void */ void update(E entity); /** * Created on 2013-9-16 * <p>DiscripEion:删除对象</p> * @reEurn void */ void delete(E entity); /** * CreaEed on 2013-9-16 * <p>DiscripEion:根据id查询对象</p> * @reEurn void */ E get(PK id); /** * Created on 2013-9-16 * <p>DiscripEion:查询全部对象</p> * @reEurn void */ List<E> getAll(); }
以及配置sessionFactory的基础类:
package com.tch.test.ssh.dao; import javax.annotation.Resource; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class CommomDao extends HibernateDaoSupport{ @Resource(name="sessionFactory")//这里由于父类中的setSessionFactory()方法是final的,不能重写,所以要换个方法名字,在方法里面调用父类的setSessionFactory()方法 public void setSuperSessionFactory(SessionFactory sessionFactory){ this.setSessionFactory(sessionFactory); } }
实体类以及映射文件:
package com.tch.test.ssh.entity; // default package import java.util.Date; /** * MyTime entity. @author MyEclipse Persistence Tools */ public class MyTime implements java.io.Serializable { // Fields private static final long serialVersionUID = 1L; private Integer id; private Date addTime; // Constructors /** default constructor */ public MyTime() { } /** full constructor */ public MyTime(Date addTime) { this.addTime = addTime; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public Date getAddTime() { return this.addTime; } public void setAddTime(Date addTime) { this.addTime = addTime; } }
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.tch.test.ssh.entity.MyTime" table="t_times" catalog="test"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native"></generator> </id> <property name="addTime" type="java.util.Date"> <column name="addTime" length="8" not-null="true" /> </property> </class> </hibernate-mapping>
然后是基础DAO实现类:
package com.tch.test.ssh.dao; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.util.List; public class BaseDaoImpl<E, PK extends Serializable> extends CommomDao implements BaseDao<E,PK>{ private Class<E> clazz; @SuppressWarnings("unchecked") public BaseDaoImpl(){ this.clazz = (Class<E>)((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];//反射方式获取子类泛型的实际类型 } @Override public void delete(E entity) { getHibernateTemplate().delete(entity); } @SuppressWarnings("unchecked") @Override public E get(PK id) { return (E)getHibernateTemplate().get(clazz, id); } @SuppressWarnings("unchecked") @Override public List<E> getAll() { return getHibernateTemplate().loadAll(clazz); /*String hql = "from "+clazz.getName(); System.out.println("hql: "+hql); return getSession().createQuery(hql).list();*/ } @Override public void save(E entity) { getHibernateTemplate().save(entity); } @Override public void update(E entity) { getHibernateTemplate().update(entity); } }
接下来是接口演示:
package com.tch.test.ssh.dao; import com.tch.test.ssh.entity.MyTime; public interface TimeDao extends BaseDao<MyTime, Integer>{ }
实现类演示(只需要继承BaseDaoImpl类,就含有了基本的增删改查等方法):
package com.tch.test.ssh.dao; import org.springframework.stereotype.Repository; import com.tch.test.ssh.entity.MyTime; @Repository("TimeDao") public class TimerDaoImpl extends BaseDaoImpl<MyTime, Integer> implements TimeDao{ }
最近贴上applicationContext.xml的内容:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 启动注入功能 --> <context:annotation-config /> <!-- 启动扫描component功能 --> <context:component-scan base-package="com.tch.test" /> <!-- 启动注解实物配置功能 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> <!-- 数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!--读取数据库配置文件 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingLocations"> <value>classpath:com/tch/test/ssh/entity/*.hbm.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> </beans>
加上测试类:
package test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tch.test.ssh.dao.TimeDao; import com.tch.test.ssh.entity.MyTime; public class TestSpring { public static void main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); TimeDao dao = (TimeDao) context.getBean("TimeDao"); List<MyTime> entities = dao.getAll(); for(MyTime entity:entities){ System.out.println(entity.getId()+" , "+entity.getAddTime()); } } }
相关推荐
- 如何在实际项目中实现DAO和三层结构的结合 - 示例代码展示,如如何创建DAO接口和实现类,以及如何在业务逻辑层中使用DAO - 关于事务管理在三层结构中的处理,如何在DAO中控制事务边界 `Base_DAO.rar`可能包含的...
在实验中,你需要创建一个具体的DAO实现类,该类将包含连接数据库、执行SQL语句、处理结果集等方法。例如,你可以为用户表创建一个UserDAO,包含增删改查等操作。 其次,MVC模式是一种将模型、视图和控制器分离开来...
总的来说,Struts+DAO实现的分页方案能够有效组织代码结构,提高代码的可读性和可维护性。虽然这种方式可能会增加一定的开发复杂性,但其带来的好处是显而易见的,尤其是在大型项目中,这样的设计模式能够显著提高...
DAO(Data Access Object)模式是软件工程中一种用于数据库访问的常见设计模式,它将业务逻辑与数据操作分离开来,...实际开发中,DAO实现类的设计和实现会根据项目需求、团队规范以及使用的数据库技术进行适当调整。
在这个"用DAO实现的用户登录系统"中,我们可以看到以下几个关键知识点: 1. **DAO模式**:DAO模式的核心是提供一个接口或抽象类,定义了对数据库的基本操作,如增删查改。具体的数据库操作由实现了这个接口或继承了...
本项目“工厂模式很DAO模式实现购物车”是使用Java语言实现的一个购物车系统,旨在帮助初学者理解并运用这两种设计模式。 首先,我们来看**工厂模式**。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳...
在DAO实现中,通常会用到以下JDBC核心步骤: - 加载数据库驱动并建立连接。 - 创建Statement或PreparedStatement对象,用于执行SQL语句。 - 执行SQL,获取ResultSet。 - 处理ResultSet,将数据转化为实体对象。 - ...
DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于数据库操作的抽象...在实际项目中,根据需求,我们还可以进一步优化DAO模式,如使用Spring的JdbcTemplate或MyBatis等工具,以简化数据库操作。
网上商城项目DAO是Java开发中的一个重要组成部分,主要负责数据访问操作。在这个小型项目中,DAO(Data Access Object)层实现了与数据库的交互,遵循了JAVA Bean规范,保证了代码的可读性和可维护性。JAVA Bean是一...
这需要我们在DAO实现类中注入SqlSessionFactory,然后创建SqlSession实例,调用其`openSession()`、`selectOne()`、`insert()`、`update()`、`delete()`等方法来执行SQL。 - 虽然这种方式灵活性较高,但会丢失...
在Java编程中,DAO(Data Access Object)模式是一种常用的设计...在文件`mytest`中,可能包含了具体的数据库表结构、测试数据以及使用DAO进行操作的示例代码。通过结合这些资源,你可以更深入地理解和实践上述概念。
在这个"在VB中用DAO实现数据库编程"的压缩包中,我们可以学习如何利用DAO在VB环境中进行数据库操作。 首先,DAO提供了几个核心对象,包括Database、Recordset、TableDef、Field等,它们各自扮演着不同的角色: 1. ...
在IT行业中,建模是软件开发过程中的一个重要环节,它帮助我们清晰地理解系统的结构和功能,便于设计和实现。本资源提供了一种用于项目model、Dao层、业务层建模的工具类,旨在简化开发流程,提高代码复用性。下面...
在这个“struts+dao实现的登录(连接数据库)”项目中,我们将深入探讨这两个概念以及如何将它们应用于Oracle数据库的连接。 **Struts框架** Struts是一个开源的MVC(Model-View-Controller)框架,主要用于构建...
在DAO模式中,JDBC常作为底层实现,负责执行SQL语句。 以下是一些关于DAO操作和JDBC的关键知识点: 1. **连接数据库**:使用`java.sql.DriverManager`类的`getConnection()`方法建立数据库连接。需要提供数据库...
本项目“JSP+DAO实现文件上传系统”利用了这两种技术来实现一个文件上传功能,同时结合MVC(Model-View-Controller)设计模式,使得代码结构清晰,易于维护。下面将详细讲解这些知识点。 **1. JSP(JavaServer ...
在给定的项目中,作者尝试简化这个过程,通过仅使用一个Servlet和一个DAO类来构建整个网站。这种方式旨在降低复杂性,提高开发效率。 Servlet在Java Web应用中扮演着服务器端处理程序的角色,它接收HTTP请求并返回...
在IT行业中,MVC(Model-View-Controller)和DAO(Data Access Object)模式是两种常见的软件...文件"项目07_使用MVC+DAO完成用户登陆(代码+笔记)"应该包含了实现这一功能的详细步骤和代码示例,可以进一步学习和参考。
DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于封装对数据库的操作,将数据访问层与业务逻辑层分离,以实现更清晰的代码结构和更好的可维护性。在DAO模式中,我们通常创建一个接口来定义...
这个"crm项目jsp+servlet+service+dao"是一个基于Java技术实现的CRM系统实例,旨在帮助学习者理解如何在实际开发中运用这些技术。下面将详细阐述这个项目中涉及的关键知识点。 1. JSP(JavaServer Pages):JSP是...