- 浏览: 70056 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (46)
- 行业应用 (10)
- Struts1.X学习开发应用 (7)
- Struts2学习开发应用 (2)
- Hibernate学习开发应用 (8)
- Spring2.5学习开发应用 (3)
- IBatis开发与应用 (2)
- Ajax学习开发应用 (3)
- DWR学习开发应用 (2)
- JQuery学习开发应用 (2)
- Ext学习开发应用 (2)
- WebService学习开发应用 (2)
- xfire学习应用开发 (2)
- xml学习开发应用 (2)
- java基础学习 (2)
- J2EE学习开发应用 (4)
- java Awt/Swing学习开发应用 (2)
- Java Web 学习开发应用 (17)
- J2SE基础学习 (2)
- java 网络编程学习开发应用 (2)
- 设计模式 (3)
- Oracle学习 (2)
- BD2学习 (2)
- 其他数据库 (2)
- SQL学习 (2)
- 报表工具 (6)
- 工作流 (2)
最新评论
import java.io.*;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.type.Type;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class GenericDao extends HibernateDaoSupport{
private ThreadLocal<Session> sessions = new ThreadLocal<Session>();
private ThreadLocal<Transaction> transactions = new ThreadLocal<Transaction>();
public synchronized Session getMySession(){
Session session = sessions.get();
if(session==null){
session = getSession();
transactions.set(session.beginTransaction());
sessions.set(session);
}else
if(!session.isOpen()){
session = getSession();
transactions.set(session.beginTransaction());
sessions.set(session);
}
return session;
}
public synchronized void commitMySession(){
Session session = sessions.get();
if(session!=null&&session.isOpen()){
transactions.get().commit();
session.close();
}
transactions.remove();
sessions.remove();
}
public synchronized void rollbackMySession(){
Session session = sessions.get();
if(session!=null&&session.isOpen()){
transactions.get().rollback();
session.close();
}
transactions.remove();
sessions.remove();
}
public <T> T get(Class<T> clazz, Serializable id){
return (T)getHibernateTemplate().get(clazz, id);
}
public <T> T load(Class<T> clazz, Serializable id){
return (T)getHibernateTemplate().load(clazz, id);
}
public <T> void save(T entity){
// System.out.println("---->gdao.save("+entity.getClass().getName()+")----");
getHibernateTemplate().save(entity);
}
public <T> void update(T entity){
getHibernateTemplate().update(entity);
}
public <T> void delete(T entity){
getHibernateTemplate().delete(entity);
}
public int execUpdateSQL(String sql, Serializable...values){
Session sess = getMySession();
SQLQuery query = sess.createSQLQuery(sql);
if(values!=null&&values.length>0){
for(int i=0; i<values.length; i++){
query.setParameter(i, values[i]);
}
}
return query.executeUpdate();
}
public Long getFirstLong(String sql, final Serializable... values) throws Exception{
List<String> params = new ArrayList<String>(1);
List<Type> types = new ArrayList<Type>(1);
params.add("c"); types.add(Hibernate.INTEGER);
Object obj = findUnique(sql, params, types, values);
if(obj==null){
return -1L;
}
if(obj instanceof Object[]){
obj = ((Object[])obj)[0];
}
if(obj instanceof Number){
return ((Number)obj).longValue();
}
return -1L;
}
// public Long getFirstLong(String sql, List<String>params, List<Type>types) throws Exception{
// Object[] obj = findUnique(sql, params, types);
// if(obj==null||obj.length==0){
// return -1L;
// }
// Object object = obj[0];
// if(object instanceof Number){
// return ((Number)object).longValue();
// }
// return -1L;
// }
public List<?> find(String hql){
return getHibernateTemplate().find(hql);
}
// public List<?> find(String hql, final Object...values){
// logger.info(hql);
// return getHibernateTemplate().find(hql, values);
// }
public <T> List<T> findByPage(Class<T> clazz, final int start, final int limit, final String where, final Serializable... values){
String hql = "from " + clazz.getName() + " as e";
if(where!=null&&where.length()>0){
hql += " where " + where;
}
final String fHql = hql;
return getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query q = session.createQuery(fHql);
if(values!=null&&values.length>0){
for(int i=0; i<values.length; i++){
q.setParameter(i, values[i]);
}
}
q.setFirstResult(start).setMaxResults(limit);
return q.list();
}
});
}
public <T> List<T> find(Class<T> clazz, final String where, final Serializable... values){
String hql = "from " + clazz.getSimpleName()+" as e";
if(where!=null&&where.length()>0){
hql += " where " + where;
}
return getHibernateTemplate().find(hql, values);
}
public long getTotalCountByHql(Class<?> clazz, final String where, final Serializable... values) throws Exception {
String hql = "select count(*) from " + clazz.getSimpleName()+" as e";
if(where!=null&&where.length()>0){
hql += " where " + where;
}
List<Number> cs = getHibernateTemplate().find(hql, values);
if(cs!=null&&cs.size()>0){
Number n = cs.get(0);
return n.longValue();
}
return 0;
}
public long getTotalCount(Class<?> clazz, final String where, final Serializable... values) throws Exception {
String sql = "select count(1) as c from " + clazz.getSimpleName() + " e";
if(where!=null&&where.length()>0){
sql += " where " + where;
}
return getFirstLong(sql, values);
}
public long getTotalCount(String sql, final Serializable... values) throws Exception {
return getFirstLong(sql, values).longValue();
}
public Object[] findUnique(final String sql, List<String>params, List<Type>types, final Serializable...values) {
Session sess = getMySession();
logger.debug("------findUnique.getSession()! sess="+sess.hashCode());
SQLQuery query = sess.createSQLQuery(sql);
for(int j=0; j<params.size(); j++){
query.addScalar(params.get(j), types.get(j));
}
if(values!=null&&values.length>0){
for(int i=0; i<values.length; i++){
query.setParameter(i, values[i]);
}
}
query.setMaxResults(1);
List<?> list = query.list();
if(list==null||list.size()==0){
return null;
}
Object obj = list.get(0);
if(obj==null){
return null;
}
logger.debug("obj.type="+obj.getClass().getName());
if(!obj.getClass().isArray()){//如果返回值不是数组,则要进行相关的处理
if(obj instanceof Number){
if(obj instanceof Long){
return new Long[]{(Long)(obj)};
}
if(obj instanceof Integer){
return new Long[]{new Long((Integer)obj)};
}
return new Number[]{(Number)obj};
}
return new Object[]{obj};
}
return (Object[])obj;
}
public List<Object[]> find(final String sql, List<String>params, List<Type>types, final Serializable... values) {
Session sess = getMySession();
logger.debug("------find.getSession()! sess="+sess.hashCode());
SQLQuery query = sess.createSQLQuery(sql);
for(int j=0; j<params.size(); j++){
query.addScalar(params.get(j), types.get(j));
}
if(values!=null&&values.length>0){
for(int i=0; i<values.length; i++){
query.setParameter(i, values[i]);
}
}
return query.list();
}
public long getNextId(String sequence) throws Exception{
String sql = "select "+sequence+".nextval as nextid from dual";
Session sess = getMySession();
logger.debug("------generateId.getSession()! sess="+sess.hashCode());
SQLQuery query = sess.createSQLQuery(sql);
query.addScalar("nextid", Hibernate.LONG);
List<?> list = query.list();
if(list==null||list.size()==0){
return -1L;
}
Object obj = list.get(0);
logger.debug("obj.type="+obj.getClass().getName());
if(obj instanceof Number){
return ((Number)obj).longValue();
}
return -1L;
}
public boolean exists(String sql, final Object...values) throws Exception{
Session sess = getMySession();
logger.debug("------exists.getSession()! sess="+sess.hashCode());
SQLQuery query = sess.createSQLQuery(sql);
for(int i=0; i<values.length; i++){
query.setParameter(i, values[i]);
}
List<?> list = query.list();
if(list==null||list.size()==0){
return false;
}
return true;
}
}
发表评论
-
birt db2 查不到结果集 报错
2011-09-07 15:22 4001在Eclipse 里预览时报这个错误。就是因为没有值,rs.n ... -
birt db2 查不到结果集 报错
2011-09-07 15:20 2807根据条件没有查询到结果,就是结果集是0的情况。错误信息:The ... -
通用的DAO查询,常见方法集合
2011-05-27 23:40 1019import java.io.*;import java.sq ... -
Java类型、Hibernate类型、标准sql类型对应表
2010-11-20 09:46 1353核心提示:Java数据类型,Hibernate数据类型,标 ... -
Hibernate 数据库操作 模板基类 GenericDao
2010-11-18 19:21 1383package com.ddhome.dao; import ... -
Hibernate 数据库操作 模板基类 实现类GenericHibernateDao
2010-11-18 19:20 774package com.ddhome.dao.hibernat ... -
c3p0、dbcp、proxool、BoneCP比较
2010-11-12 01:41 16821 c3p0、dbcp、proxool、BoneCP比较 1. ...
相关推荐
14.1 理解ActiveX Windows通用控件 433 14.1.1 使用TabStrip控件 434 14.1.2 使用Access选项卡和使用ActiveX TabStrip控件的区别 436 14.2 ImageList控件详述 438 14.2.1 在设计阶段添加图像 438 14.2.2 ...
14.1 理解ActiveX Windows通用控件 433 14.1.1 使用TabStrip控件 434 14.1.2 使用Access选项卡和使用ActiveX TabStrip控件的区别 436 14.2 ImageList控件详述 438 14.2.1 在设计阶段添加图像 438 14.2.2 在运行...
1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) 1.7 Spring开闭原则的表现-BeanPostProcessor扩展点-2 1.8 Spring...
12.5.2 查询接口方法的设计 12.5.3 分页查询接口设计 12.6 小结 第4篇 业务层及Web层技术 第13章 任务调度和异步执行器 13.1 任务调度概述 13.2 Quartz快速进阶 13.2.1 Quartz基础结构 13.2.2 使用SimpleTrigger ...
12.5.2 查询接口方法的设计 12.5.3 分页查询接口设计 12.6 小结 第4篇 业务层及Web层技术 第13章 任务调度和异步执行器 13.1 任务调度概述 13.2 Quartz快速进阶 13.2.1 Quartz基础结构 13.2.2 使用SimpleTrigger ...
答:CTS 通用类型系统、CLS 通用语言规范、CLR 公共语言运行时。 Struts1和Struts2原理和区别? 答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的...
10.5.8 使用Map集合记录关联实体 423 10.5.9 对关联实体进行排序 424 10.6 继承关系映射 426 10.6.1 整个类层次对应一张表的 映射策略 427 10.6.2 连接子类的映射策略 430 10.6.3 每个具体类对应一张表的 映射策略 ...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3....
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
11.2.7. 执行查询 11.2.8. 更新数据库 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 11.3.4. SingleConnectionDataSource类 11.3.5. ...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多...
通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器...