`
hanjava
  • 浏览: 32385 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

简单常用方法接口_1

阅读更多
第一步,写泛型
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;
}
}
分享到:
评论

相关推荐

    嵌入式通信接口_嵌入式-常用知识&面试题库_大厂面试真题.rar

    本资料集主要涵盖了嵌入式通信接口的常用知识及面试题库,对于寻求在IT行业特别是嵌入式领域工作的求职者来说,是非常有价值的参考资料。 首先,我们需要了解嵌入式通信接口的基础概念。通信接口是指硬件设备或软件...

    fetion.classes.20080731.rar_PHP 接口_PHPQQClient.rar_fetion php cl

    1. **class.fetion.php**:这是飞信PHP接口的核心类文件,很可能包含了与飞信服务器通信的所有方法,如登录、发送消息、接收消息等。开发者可以通过实例化这个类并调用其方法来实现与飞信服务的交互。 2. **class....

    spi_verilog.tar.gz_SPI VHDL_SPI接口_spi verilog_spi_verilog.tar_sp

    SPI(Serial Peripheral Interface)是一种广泛应用于微控制器与外部设备间通信的串行接口标准,具有简单、高效的特点。本资源提供了SPI接口的详细设计和逻辑实现,适用于VHDL和Verilog两种硬件描述语言,适合学习和...

    uart_serial.rar_SOC_UART接口_soc项目_uart_uart vhdl code

    UART(通用异步接收发送器)是嵌入式系统中常用的一种串行通信接口,它在 SOC(System on Chip)设计中扮演着重要的角色。在本项目中,UART接口的VHDL源代码被用于SOC项目的开发,展示了如何在硬件描述语言中实现这...

    实验2可编程接口_可编程串口_

    在电子工程和嵌入式系统领域,可编程接口和可编程串口是极其重要的概念,尤其是在微控制器(如STM32F103)的应用中。STM32F103是一款高性能、低功耗的ARM Cortex-M3内核微控制器,广泛用于各种嵌入式设计,包括串行...

    ado.rar_ado数据库接口_ado源代码

    ADO(ActiveX Data Objects)是微软提供的一种用于访问和操作数据库的数据接口,它基于OLE DB技术,使得开发者能够轻松地在各种应用程序中处理数据。在本文中,我们将深入探讨ADO数据库接口及其源代码,以及如何在...

    【整理】常用通信接口一(串口、RS232、RS485、USB、TYPE-C原理与区别).pdf

    USB(通用串行总线)是另一种广泛使用的接口,其定义了一个标准,使计算机与其他外部设备的连接变得简单。USB接口支持更高的数据传输速率,如USB 2.0的480Mbps和USB 3.0的5Gbps。USB接口还提供了电源,可以为连接的...

    fluent-UDF_udf_常用UDF_fluent_fluentudf.zip

    UDF是Fluent内置的编程接口,允许用户扩展软件的功能,实现自定义的物理模型、源项或者边界条件。通过UDF,用户可以编写C或C++代码,与Fluent的内核直接交互,为复杂问题提供解决方案。 二、UDF编写基础 1. UDF结构...

    Oracle_EBS_常用接口开发参考

    非常实用的dd,包括Interface/API的List以及部分简单示例。

    Wabacus框架常用接口方法[参照].pdf

    《Wabacus框架常用接口方法详解》 Wabacus框架是一个强大的工具,它为开发者提供了丰富的客户端接口,便于实现各种功能。本文将详细介绍Wabacus框架中的常用接口方法,帮助开发者更好地理解和应用这些功能。 首先...

    第7章_Nios_II_常用外设编程__SOPC技术与应用.doc

    【Nios II 常用外设编程:SOPC技术与应用】 在嵌入式系统设计中,Nios II处理器常常与SOPC(System On a Programmable Chip,可编程片上系统)技术结合,其中涉及到的关键部分之一是外设编程。本章节主要讨论的是...

    简单工厂和常用接口的实现

    在"简单工厂和常用接口的实现"这个实例中,我们可能会看到以下几个关键点: 1. **简单工厂的实现**:首先会有一个工厂类,比如`ProductFactory`,它包含了静态方法如`createProduct`,根据输入的类型参数返回相应的...

    snmputil.exe+snmputilg.exe+常用的SNMP_OID

    它提供了对SNMP协议的简单接口,便于网络管理人员进行网络设备的管理和故障排查。snmputilg.exe可能是snmputil的一个增强版或者具有不同功能的变体,具体用法可能略有不同,但同样服务于SNMP的管理任务。 2. SNMP_...

    EDA常用代码_eda减法代码_EDA时间代码_EDA常用代码_

    在Python中,Pandas库提供了方便的数据操作接口,例如`df1 - df2`可以直接对DataFrame对象执行减法操作。同时,如果涉及到时间序列数据,可能需要对日期进行对齐,确保对应日期的数据被正确相减。 接下来,我们要...

    ArcGIS开发常用接口

    根据给定的信息,我们可以深入探讨ArcGIS开发中的几个关键接口及其使用方法,这些知识点对于进行地理信息系统(GIS)开发非常重要。 ### IField 接口详解 #### 1. 属性介绍 - **AliasName**: 只读属性,用于获取...

    串口模块.zip_串口接收解析_串口模块_串口解析_单片机调试输出接口_接受状态

    在单片机调试中,串口输出接口是常用的调试手段,因为它能实时显示程序运行过程中的变量值和状态,帮助开发者快速定位问题。通过串口模块,开发者可以将单片机内部的运行信息发送到PC或其他设备,以文本形式显示,这...

    简易万年历_单片机_万年历_

    【简易万年历_单片机_万年历】项目是一个基于51单片机的电子日历设计,它能够实现时间的显示、调整以及复位功能。在电子工程领域,这样的项目对于学习单片机编程和硬件接口设计非常有帮助。下面我们将详细探讨这个...

    ZX_1开发板用户手册1

    7. **四位按键**:四位按键为用户提供简单的输入功能,可以实现基本的交互操作,是学习和实验中常用的输入设备。 8. **EEPROM**:EEPROM(电可擦可编程只读存储器)用于存储非易失性数据,即使在电源关闭后也能保持...

    常用显示接口简介:I2C、SPI、8080、6800、RGB、MIPI-SDI.pdf

    SPI的优点在于其简单直观的接口,高传输速度,以及较强的抗干扰能力。然而,SPI接口存在一些局限性,如缺乏流控制和应答机制,导致主设备无法确定从设备是否已接收数据,这需要通过软件层面的补偿。此外,SPI不支持...

Global site tag (gtag.js) - Google Analytics