第一步,写泛型
package dao;
import java.io.Serializable;
import java.util.List;
/**
* @author zhonghy
*基于泛型的通用Dao接口
* @param <T>
* @param <ID>
*/
public interface GenericDao<T,ID extends Serializable> {
/**
* 增加
* @param entity
*/
boolean add(T entity);
/**
* 删除
* @param entity
*/
boolean delete(T entity);
/**
* 修改
* @param entity
*/
boolean update(T entity);
/**
* 根据id查询
* @param id
* @return T
*/
T findById(String hql);
/**
* 查询所有
* @return List<T>
*/
List<T> findAll(String hql);
/**
* 分页查询
* @param pageNo
* @param pageSize
* @return List<T>
*/
List<T> findList(String hql,int pageNo,int pageSize);
/**
* 获取所有实体数量
* @return int
*/
int getTotal(String hql);
}
第二步,实现泛型
package imp;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import dao.GenericDao;
public class GenericHibernateDaoImpl<T, ID extends Serializable> extends
HibernateDaoSupport implements GenericDao<T, ID> {
private Class<T> clazz;
@SuppressWarnings("unchecked")
public GenericHibernateDaoImpl() {
// 通过反射获取T的类型信息实例
this.clazz = (Class<T>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public boolean add(T entity) {
// TODO Auto-generated method stub
boolean flag = false;
try {
this.getHibernateTemplate().save(entity);
flag = true;
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
}
public boolean delete(T entity) {
// TODO Auto-generated method stub
boolean flag = false;
try {
this.getHibernateTemplate().delete(entity);
flag=true;
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
}
public List<T> findAll(final String hql) {
// TODO Auto-generated method stub
List list = null;
list = (List) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
return session.createQuery(hql).list();
}
});
return list;
}
@SuppressWarnings("unchecked")
public T findById(final String hql) {
// TODO Auto-generated method stub
return (T) this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query q = session.createQuery(hql);
T t = (T) q.uniqueResult();
return t;
}
});
}
@SuppressWarnings("unchecked")
public List<T> findList(final String hql, final int pageNo,
final int pageSize) {
// TODO Auto-generated method stub
List list = (List) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
Query query = session.createQuery(hql);
query.setFirstResult(pageNo);
query.setMaxResults(pageSize);
List l = query.list();
return l;
}
});
return list;
}
public int getTotal(final String hql) {
// TODO Auto-generated method stub
Integer count = (Integer) this.getHibernateTemplate().find(hql).size();
if (null == count) {
return 0;
} else {
return count.intValue();
}
}
public boolean update(T entity) {
// TODO Auto-generated method stub
boolean flag=false;
try{
this.getHibernateTemplate().update(entity);
flag=true;
}catch(Exception ex){
ex.printStackTrace();
}
return flag;
}
}
package dao;
import java.io.Serializable;
import java.util.List;
/**
* @author zhonghy
*基于泛型的通用Dao接口
* @param <T>
* @param <ID>
*/
public interface GenericDao<T,ID extends Serializable> {
/**
* 增加
* @param entity
*/
boolean add(T entity);
/**
* 删除
* @param entity
*/
boolean delete(T entity);
/**
* 修改
* @param entity
*/
boolean update(T entity);
/**
* 根据id查询
* @param id
* @return T
*/
T findById(String hql);
/**
* 查询所有
* @return List<T>
*/
List<T> findAll(String hql);
/**
* 分页查询
* @param pageNo
* @param pageSize
* @return List<T>
*/
List<T> findList(String hql,int pageNo,int pageSize);
/**
* 获取所有实体数量
* @return int
*/
int getTotal(String hql);
}
第二步,实现泛型
package imp;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import dao.GenericDao;
public class GenericHibernateDaoImpl<T, ID extends Serializable> extends
HibernateDaoSupport implements GenericDao<T, ID> {
private Class<T> clazz;
@SuppressWarnings("unchecked")
public GenericHibernateDaoImpl() {
// 通过反射获取T的类型信息实例
this.clazz = (Class<T>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public boolean add(T entity) {
// TODO Auto-generated method stub
boolean flag = false;
try {
this.getHibernateTemplate().save(entity);
flag = true;
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
}
public boolean delete(T entity) {
// TODO Auto-generated method stub
boolean flag = false;
try {
this.getHibernateTemplate().delete(entity);
flag=true;
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
}
public List<T> findAll(final String hql) {
// TODO Auto-generated method stub
List list = null;
list = (List) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
return session.createQuery(hql).list();
}
});
return list;
}
@SuppressWarnings("unchecked")
public T findById(final String hql) {
// TODO Auto-generated method stub
return (T) this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query q = session.createQuery(hql);
T t = (T) q.uniqueResult();
return t;
}
});
}
@SuppressWarnings("unchecked")
public List<T> findList(final String hql, final int pageNo,
final int pageSize) {
// TODO Auto-generated method stub
List list = (List) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
Query query = session.createQuery(hql);
query.setFirstResult(pageNo);
query.setMaxResults(pageSize);
List l = query.list();
return l;
}
});
return list;
}
public int getTotal(final String hql) {
// TODO Auto-generated method stub
Integer count = (Integer) this.getHibernateTemplate().find(hql).size();
if (null == count) {
return 0;
} else {
return count.intValue();
}
}
public boolean update(T entity) {
// TODO Auto-generated method stub
boolean flag=false;
try{
this.getHibernateTemplate().update(entity);
flag=true;
}catch(Exception ex){
ex.printStackTrace();
}
return flag;
}
}
发表评论
-
Http post请求
2017-08-23 10:14 838package com.java.util; import ... -
Properties 文件读取
2017-08-23 09:52 497package com.java.util; import ... -
Build模式练习
2017-08-02 15:06 471/** * Build模式练习 * @author Adm ... -
JSON转换工具类
2016-08-29 19:56 558import java.beans.Introspection ... -
java基础知识
2016-08-25 16:26 437一、Redis和Memcache的区别 ... -
java常用Utils整理
2016-08-25 16:25 1605package com.service_im.spoon.ut ... -
Java获取当前时间并转化成字符串
2012-11-15 18:08 3309package com.happy.sqlite.test; ... -
对于特殊字符保存到数据库后再读出原样输出到页面
2012-08-29 18:25 976/** *如<a href="http: ... -
struts2-excel文件的读取
2012-07-03 19:34 823页面: <input type="file&q ... -
struts2文档上传与下载
2012-07-03 19:21 657页面(freemark页面): <input type ... -
heibernate多对多表的处理
2012-06-21 10:56 1101老师Teacher 与 课程Course 是一个多对多的关系, ... -
树列表遍历
2012-06-18 21:32 655//方法如下: public static void main ... -
列表项左右移动
2012-06-02 22:58 750<!doctype html public " ... -
JAVA修饰符类型解释
2012-03-12 19:39 792public的类、类属变量及方法,包内及包外的任何类均可以访问 ... -
简单常用方法接口_2
2012-02-16 16:06 648第三步,定义具体dao接口 package dao; imp ... -
log4j的应用实例
2012-02-09 17:00 732第一步,要项目的src下面建一个log4j.propertie ...
相关推荐
本资料集主要涵盖了嵌入式通信接口的常用知识及面试题库,对于寻求在IT行业特别是嵌入式领域工作的求职者来说,是非常有价值的参考资料。 首先,我们需要了解嵌入式通信接口的基础概念。通信接口是指硬件设备或软件...
1. **class.fetion.php**:这是飞信PHP接口的核心类文件,很可能包含了与飞信服务器通信的所有方法,如登录、发送消息、接收消息等。开发者可以通过实例化这个类并调用其方法来实现与飞信服务的交互。 2. **class....
SPI(Serial Peripheral Interface)是一种广泛应用于微控制器与外部设备间通信的串行接口标准,具有简单、高效的特点。本资源提供了SPI接口的详细设计和逻辑实现,适用于VHDL和Verilog两种硬件描述语言,适合学习和...
UART(通用异步接收发送器)是嵌入式系统中常用的一种串行通信接口,它在 SOC(System on Chip)设计中扮演着重要的角色。在本项目中,UART接口的VHDL源代码被用于SOC项目的开发,展示了如何在硬件描述语言中实现这...
在电子工程和嵌入式系统领域,可编程接口和可编程串口是极其重要的概念,尤其是在微控制器(如STM32F103)的应用中。STM32F103是一款高性能、低功耗的ARM Cortex-M3内核微控制器,广泛用于各种嵌入式设计,包括串行...
ADO(ActiveX Data Objects)是微软提供的一种用于访问和操作数据库的数据接口,它基于OLE DB技术,使得开发者能够轻松地在各种应用程序中处理数据。在本文中,我们将深入探讨ADO数据库接口及其源代码,以及如何在...
USB(通用串行总线)是另一种广泛使用的接口,其定义了一个标准,使计算机与其他外部设备的连接变得简单。USB接口支持更高的数据传输速率,如USB 2.0的480Mbps和USB 3.0的5Gbps。USB接口还提供了电源,可以为连接的...
UDF是Fluent内置的编程接口,允许用户扩展软件的功能,实现自定义的物理模型、源项或者边界条件。通过UDF,用户可以编写C或C++代码,与Fluent的内核直接交互,为复杂问题提供解决方案。 二、UDF编写基础 1. UDF结构...
非常实用的dd,包括Interface/API的List以及部分简单示例。
《Wabacus框架常用接口方法详解》 Wabacus框架是一个强大的工具,它为开发者提供了丰富的客户端接口,便于实现各种功能。本文将详细介绍Wabacus框架中的常用接口方法,帮助开发者更好地理解和应用这些功能。 首先...
【Nios II 常用外设编程:SOPC技术与应用】 在嵌入式系统设计中,Nios II处理器常常与SOPC(System On a Programmable Chip,可编程片上系统)技术结合,其中涉及到的关键部分之一是外设编程。本章节主要讨论的是...
在"简单工厂和常用接口的实现"这个实例中,我们可能会看到以下几个关键点: 1. **简单工厂的实现**:首先会有一个工厂类,比如`ProductFactory`,它包含了静态方法如`createProduct`,根据输入的类型参数返回相应的...
它提供了对SNMP协议的简单接口,便于网络管理人员进行网络设备的管理和故障排查。snmputilg.exe可能是snmputil的一个增强版或者具有不同功能的变体,具体用法可能略有不同,但同样服务于SNMP的管理任务。 2. SNMP_...
在Python中,Pandas库提供了方便的数据操作接口,例如`df1 - df2`可以直接对DataFrame对象执行减法操作。同时,如果涉及到时间序列数据,可能需要对日期进行对齐,确保对应日期的数据被正确相减。 接下来,我们要...
根据给定的信息,我们可以深入探讨ArcGIS开发中的几个关键接口及其使用方法,这些知识点对于进行地理信息系统(GIS)开发非常重要。 ### IField 接口详解 #### 1. 属性介绍 - **AliasName**: 只读属性,用于获取...
在单片机调试中,串口输出接口是常用的调试手段,因为它能实时显示程序运行过程中的变量值和状态,帮助开发者快速定位问题。通过串口模块,开发者可以将单片机内部的运行信息发送到PC或其他设备,以文本形式显示,这...
【简易万年历_单片机_万年历】项目是一个基于51单片机的电子日历设计,它能够实现时间的显示、调整以及复位功能。在电子工程领域,这样的项目对于学习单片机编程和硬件接口设计非常有帮助。下面我们将详细探讨这个...
7. **四位按键**:四位按键为用户提供简单的输入功能,可以实现基本的交互操作,是学习和实验中常用的输入设备。 8. **EEPROM**:EEPROM(电可擦可编程只读存储器)用于存储非易失性数据,即使在电源关闭后也能保持...
SPI的优点在于其简单直观的接口,高传输速度,以及较强的抗干扰能力。然而,SPI接口存在一些局限性,如缺乏流控制和应答机制,导致主设备无法确定从设备是否已接收数据,这需要通过软件层面的补偿。此外,SPI不支持...