baseDao 使用spring3+hibernate4方式
启动异常:
java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder
由于hibernate4已经完全可以实现事务了 与spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用session。 获得session:getSessionFactory().getCurrentSession()。
package org.konghao.basic.dao; import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
*
* @author zh
*
* @param <T>
*/
public interface IBaseDao<T extends Serializable> { void save(T t);
void update(T t);
int save(String hql,Object[] params);
void delete(T t);
void deleteById(String hql, Object[] params);
int update(String hql,Object[] params);
T get(final Serializable id);
T load(final Serializable id);
public List<T> listNotIn(String hql, Object[] params);
public List<T> getByHqlNotIn(String hql, Object[] params);
List<T> listAll();
List<T> listFenYe(int firstResult, int maxResults);
List<T> listFenYeNotIn(int firstResult, int maxResults, String hql, Object[] params);
long getCount();
long getCount(String hql,Object[] params);
List<T> listByHql(String hql,Object[] params);
T getByHql(String hql,Object[] params);
List<T> listFenYeAddparams(int firstResult, int maxResults,String hql,Object[] params);
List<T> queryPage(Map map,int firstResult, int maxResults,String hql) ;
long getCount(String hql, Map map);
}
Hibernate4方式
package org.konghao.basic.dao; import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import javax.inject.Inject; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory; /**
* BaseDaoImpl不能在类型未确定前直接实例化
*
* @author zh
* @param <T>
*/
public class BaseDao<T extends Serializable> implements IBaseDao<T> { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() {
return sessionFactory;
} @Inject
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} protected Session getSession() {
return sessionFactory.getCurrentSession();
} @SuppressWarnings("rawtypes")
private Class Tclass; @SuppressWarnings("rawtypes")
public BaseDao() {
Type type = this.getClass().getGenericSuperclass();
if (type.toString().indexOf("BaseDao") != -1) {
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
} else {
type = ((Class) type).getGenericSuperclass();
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
}
} /**
* 保存对象
*
* @param Object
*/ public void save(T t) {
// this.getHibernateTemplate().save(t)
getSession().save(t); } /**
* 更新对象内容
*
* @param Object
*/
public void update(T t) {
// this.getHibernateTemplate().update(t);
getSession().update(t);
} /**
* 删除对象
*
* @param t
*/
public void delete(T t) {
// this.getHibernateTemplate().delete(t);
getSession().delete(t);
} public void deleteById(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
query.executeUpdate();
} /**
* ͨ通过ID 得到对象
*
* @param Serializable
*/
@SuppressWarnings("unchecked")
public T get(Serializable id) {
// return (T) this.getHibernateTemplate().get(getTclass(), id);
return (T) getSession().get(getTclass(), id);
} /**
* 取得所有对象
*
*/
@SuppressWarnings("unchecked")
public List<T> listAll() {
String hql = "from " + getTclass().getSimpleName();
return this.getSession().createQuery(hql).list();
} /**
* hql解决方案
*
* @param String
* hql
*
* @param Object
* [] params 参数列表 顺序不能颠倒
*/ @SuppressWarnings("unchecked")
public List<T> listByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null == params || params.length == 0) {
return query.list();
} else {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return query.list();
} /**
* 同类分页
*
* @param int firstResult 从第几条开始
* @param int maxResults 要取几条
*/
@SuppressWarnings({ "unchecked" })
public List<T> listFenYe(int firstResult, int maxResults) {
String hql = "from " + getTclass().getSimpleName();
Query query = this.getSession().createQuery(hql)
.setMaxResults(maxResults).setFirstResult(firstResult);
return query.list();
} /**
* 取得行数
*/ public long getCount() {
String hql = "select count(*) from " + getTclass().getSimpleName();
return (Long) this.getSession().createQuery(hql).uniqueResult();
} /**
* 懒加载load
*/
@SuppressWarnings("unchecked")
public T load(Serializable id) {
return (T) getSession().load(getTclass(), id);
} @SuppressWarnings("unchecked")
public T getByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> getByHqlNotIn(String hql, Object[] params) {
System.out.println("Tclass:" + Tclass);
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.list();
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeAddparams(int firstResult, int maxResults,
String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult)
.list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeNotIn(int firstResult, int maxResults, String hql,
Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listNotIn(String hql, Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
}
list = query.list();
return list;
} public long getCount(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return (Long) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> queryPage(Map map, int firstResult, int maxResults,
String hql) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
List<T> list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
return list;
} public long getCount(String hql, Map map) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
return (Long) query.uniqueResult();
} public int update(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (params == null) {
return query.executeUpdate();
}
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public int save(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public T queryObject(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("rawtypes")
public Class getTclass() {
if(Tclass == null){
Type type = this.getClass().getGenericSuperclass();
ParameterizedType type2 = (ParameterizedType) type;
Type[] types = type2.getActualTypeArguments();
Tclass = (Class<?>) types[0];
}
return Tclass;
} @SuppressWarnings("rawtypes")
public void setTclass(Class tclass) {
Tclass = tclass;
}
}
baseDao 使用spring3+hibernate4方式的更多相关文章
- baseDao 使用spring3+hibernate3方式
package cn.zk.pic.service.dao; import java.io.Serializable; import java.util.List; import java.util. ...
- 画蛇添足-记spring3 hibernate4整合时遇到问题的处理办法
最近在来到一个新公司,使用新的spring3,hibernate4框架,在使用注解事务总是不起作用. 首先看配置文件,然后再讲解. 首先是springmvc-servlet.xml,这个配置文件是se ...
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- Struts2,Spring3,Hibernate4整合--SSH框架
Struts2,Spring3,Hibernate4整合--SSH框架(学习中) 一.包的导入 1.Spring包 2.Hibernate 包 3.struts 包 (还欠 struts2-sprin ...
- Maven搭建Struts2+Spring3+Hibernate4框架
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- SpringMVC+Spring3+Hibernate4开发环境的搭建
在项目早期比较简单,大多用JSP .Servlet + JDBC 直接获取,以后使用 Struts1(Struts2)+Spring+Hibernate, 严格格按照分层概念驱动项目开发.利用这段时间 ...
- 【转】SpringMVC+Spring3+Hibernate4开发环境搭建
原文地址: SpringMVC+Spring3+Hibernate4开发环境搭建
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- Spring3+hibernate4框架整合
花了俩天时间复习了一下Spring和jhibernate架构知识,在学习过程中受益颇多.知识用起来才能活起来,长时间不去触碰他就会变得很陌生. Spring 提供了统一的数据访问架构,可以支持JDBC ...
随机推荐
- 给产品经理讲技术,不得不懂的TCP和UDP
TCP/IP协议,你一定经常听说吧,其中TCP(Transmission Control Protocol)称为传输控制协议,IP(Internet Protocol)称为因特网互联协议,好吧,这都是 ...
- final修饰符,finally,finalize区别
1.final 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此,一个类不能即被声明为abstract,又被声明为final.将变量或方法声明为final,可以保证 ...
- 实现LoaderCallbacks接口动态循环加载网上图片并展示在手机屏幕上 ...
1.布局xml文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...
- 【转】 iOS开发之打包上传到App Store——(一)各种证书的理解
OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大,然后 ...
- propertyGrid控件 z
1.如果属性是enum类型,那么自然就是下拉的. 2.如果是你自定义的下拉数据,那么需要用到转换属性标签TypeConverter 参见: http://blog.csdn.net/luyifeini ...
- C#调用WebService实现天气预报 http://www.webxml.com.cn
C#调用WebService实现天气预报 2011-02-21 14:24:06 标签:天气预报 休闲 WebServices 职场 C# 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始 ...
- ubuntu 挂起唤醒和声音偏小的问题
自从开始用ubuntu就遇到了声音偏小的问题,一直很让我头疼.还好插上耳机后勉强能用,也就没继续追究了. 可最近发现了一个更加严重的问题挂起后竟然无法唤醒,一直是黑屏的状态,必须强制关机再重启,这就蛋 ...
- 3 years in Tencent game
心里一直有继续写博文的愿望,却一直被各种借口打断,现在回头一看,已经在腾讯待了3年半之久.3年半是个比较尴尬的时间点,不好意思说自己是游戏从业老兵,但又觉得自己对于行业已经看到比较清楚了:从当年毕业时 ...
- 【LeetCode】118 & 119 - Pascal's Triangle & Pascal's Triangle II
118 - Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, ...
- gradle使用eclipse debug 代码
设置环境变量 unix,linux export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,s ...