首先是定义基础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、service、servlet 这三层是主要的结构,类似 MVC 架构,Dao是模型实体类(逻辑层),service是服务层,servlet是视图层,三者协作共同完成项目。 这里的User是由user表来定义的...
由于项目中模块功能废弃,因此删除了相关数据表结构,且不能恢复,没有备份,只有代码里的实体类,所以用此项目直接将实体类在数据库中生成对应的表结构,仅需配置你的数据库地址即可运行
项目结构 1.数据库:MySQL实现数据存储 2.服务器: 1.DAO层,负责数据库操作,CRUD 2.Service层,处理业务逻辑,通过调用DAO层保存到数据库 3.Web层,用Servlet实现,获取请求参数封装成Bean对象,调用Service...
完整的api可以参见 domainDaoSupport配置使用修改项目中的context.json placeholds 可以很方便的在不同环境间切换"dependencies": { "bearcat-dao": "*" }, "beans": [{ "id": ...
基于MVC的商品管理系统,可以实现登录、注册,基本增删改查。其它功能如下: 1.角色管理。可以选择使用管理员或普通用户登录。 2.模糊查询和多条件组合...包里有必读.md,介绍了项目的基本情况、数据库结构和效果图。
一、源码特点 JSP期末考试安排管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 (1)教师管理:对教师信息进行添加、...
(2)用户登录系统后,可进入系统后台,在系统后台中可实现图书管理、用户管理、订单管理、公告管理、投票管理等。 (3)系统后台还提供了退出系统超链接。 SSM架构,是三层结合所成的框架,分别是Spring、...
(2)用户登录系统后,可进入系统后台,在系统后台中可实现图书管理、用户管理、订单管理、公告管理、投票管理等。 (3)系统后台还提供了退出系统超链接。 SSM架构,是三层结合所成的框架,分别是Spring、...
ejb端 jsfejb3-ejb |-- src |-- org.qiujy.ejb3.dao 持久层DAO接口包 |-- org.qiujy.ejb3.dao.impl 持久层DAO接口实现类包(是ejb3中的会话Bean) |-- org.qiujy.ejb3.entity 实体域模型类包...
实现DAO模式能够更加专注于编写数据访问代码.在这篇文章中,Java开发人员Sean C. Sullivan从三个方面讨论DAO编程的结构特征:事务划分,异常处理,日志记录.在最近的18个月,我和一个优秀的软件开发团队一起工作,开发...
一、项目简介 本项目是一套基于Java swing和mysql实现学生信息...项目结构:分为Dao、model、view、util四个顶层包,采用的是mvc的设计模式。 详见 https://blog.csdn.net/weixin_43860634/article/details/132543148
《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL ...
结合目前博客系统的设计方案,本项目具有以下特点:界面设计美观大方、操作简单。功能完善、结构清晰。个人博客浏览。能够实现后台用户管理。能够实现推荐博客操作。能够实现后台文章管理。能够实现后台相册管理 ...
29.3.2 实现数据连接操作(DAO)的实现类 29.3.3 实现数据连接操作(DAO)的代理类 29.3.4 实现数据连接操作(DAO)的工厂类 29.4 人员信息管理项目——服务层和表示层 29.4.1 人员信息管理项目的服务层 29.4.2 人员...
结合目前博客系统的设计方案,本项目具有以下特点:界面设计美观大方、操作简单。功能完善、结构清晰。个人博客浏览。能够实现后台用户管理。能够实现推荐博客操作。能够实现后台文章管理。能够实现后台相册管理 ...
weixin-mp-java基于Java,Spring,Maven实现的微信公众平台一整套代码,从前端Controller到后端的Dao的实现1.0.1 2013-1月更新:支持上传下载多媒体文件支持接收消息(语音似乎总有问题,同时收到来自微信两个服务器的...
购物车模块:实现了将商品添加到购物车、修改购物车中商品数量、删除购物车中商品等功能。订单模块:实现了创建订单、查看订单、取消订单等功能。支付模块:实现了在线支付功能,支持多种支付方式。代码结构:项目...
1、quark-common :采用了Springdata+MySql实现基础服务抽象,DAO层,Entity以及DTO 2、quark-admin:采用springboot+shiro搭建的细粒度的基于URL的权限管理系统,进行帖子管理,回复管理,用户管理等操作 3、quark-...